计算机二叉树节点计算公式,二叉树节点数该怎么计算?有几种算法?

每一棵二叉树中都有左右两棵子树,子树中又有无数节点,那你们知道子树中的节点该怎么计算吗?快来跟小编了解一下吧。

二叉树算法概念

对于任何一棵二叉树来说,其叶子结点的数目为n0,且其度数为2的结点数n2,则n0=n2+1.

证明:对于此二叉树:

94c31b0108df95336dc3d869ad2c9402.png

设其度数为1的结点数为n1. 从下往上看,每个结点都会有一个边朝上,除了根结点,则边总数为:N=n0+n1+n2-1 ①

从上往下看,度数为2的结点有两个边,度数为1的结点有1个边,度数为0的结点有0个边,则边总数为:N=0*n0+1*n1+2*n2 ②

联系① ②,得:n0=n2+1

二叉树的叶子节点数含义:没有子树的结点是叶子结点。它的结点的度就是指,该结点的子树的个数,在二叉树中,不存在度大于2的结点。

计算公式:n0=n2+1

n0 是叶子节点的个数

n2 是度为2的结点的个数

n0=n2+1=5+1=6

故二叉树有5个度zhidao为2的结点,则该二叉树中的叶子结点数为6。

二叉树节点算法

1)、程序计算法int leaf(bitree t)

{

if(!t)

return 0; //空树,无叶子

else if(!t->lch && !t->rch)

return 1;

else

return (leaf(t->lch) + leaf(t->rch));

}

2)、手动计算公式

利用“树中所有结点的度数之和再加1等于结点数”

7b007b871afd85f56f29a7fafc5d037e.png

则叶子节点数,即为:

4e06a128f6d162cbfdf1726ea180d6fb.png

3)、递归算法public int getTotal(Node node){

if(node == null){

return 0;

}

return getTotal(node.left) + getTotal(node.right) + 1;}

以上就是今天的所有内容了,二叉树是树结构中一个较复杂的结构,它有很多分支,分支又有分支,所以想要深入了解二叉树还是要一定的努力的。如果你还想要了解更多二叉树相关的java常见问答知识,就请来关注我们的网站吧。

推荐阅读:

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值