已知完全二叉树的总节点数求叶子节点数

树的节点分析:

设一棵树的叶子节点为n0, 度为1的节点个数为n1, 度为2的节点个数为n2,s 为树的总节点个数,那么,有 n0 = n2 + 1.

s = n0 + n1 + n2     (1)
s = n1*1 + 2*n2 +1 (因为根节点没有枝条指向它)  (2)
=> n0 = n2 + 1

(1)* 2      => 2s = 2n0 + 2n1 + 2n2   (3)

(3)-(2)=> s = 2n0 +n1 - 1

=> n0 = (s+1-n1)/2

如果是完全二叉树,那么度为1的节点为0个或1个,也就是n1 = 0 或 1

(a) 当n1=0时,n0 = (s+1)/2, 所以s为奇数(因为n0是整数),也就是总节点数为奇数。

(b) 当n1=1时,n0 = s/2, 所以s为偶数(因为n0是整数),也就是总节点数为偶数。

所以: 总节点为s的完全二叉树,当s为奇数时, 叶子节点数为(s+1)/2,当s为偶数时,叶子节点数为s/2。

题:某棵完全二叉树上有699个节点则该二叉树的叶子节点数为

s = 699, n0 = (s+1)/2 = 350

也就是,对于完全二叉树,总结点数s,s为奇数和 n1=0 , n0 = (s+1) /2对应, s为偶数和n1=1, n0 = s/2对应。那么, 如果已知完全二叉树的叶子节点数为8,那么n0 = 8, s = 15。

summary:

其实也就是可以很容易的根据完全二叉树的总节点个数求到它的叶子节点个数,然后如果已知完全二叉树的叶子节点个数,也可以容易的反推到它的总节点个数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值