数据结构 完全二叉树计算节点数问题。

2024-11-15 17:32:13
推荐回答(5个)
回答(1):

既然是完全二叉树,那么叶子节点数必然是偶数,想都不用想
B

回答(2):

1.深度为m的满二叉树有2^m-1个结点.
因为满二叉树的定义为:一颗深度为k且有2^k-1个结点的二叉树称为满二叉树.
2.若要树深为最小,显然要使除最后一层外的每一层都有尽可能多的结点,即要二叉树为完全二叉树.
由二叉树的一个重要性质:具有n个结点的完全二叉树的深度为[log2n]+1.(这是在根节点层次为1时,若为0,将+1去掉即可)
log2n是以2为底n的对数
[log2n]为不大于log2n的最大整数
可知,含有100个(根)结点的二叉树,(应该没"根"字吧)
可能的最小树深为[log2
100
]+1
二叉树根结点的层次为0时,可能的最小树深为[log2
100
]
即为6.
可以这样计算:确定最小树深当且仅当二叉树为完全二叉树时出现,设深度为k,(此时设二叉树根结点的层次为0)有:
2^0+2^1+2^2+...+2^(k-1)<100=<2^0+2^1+...+2^k
即2^k-1<100=<2^(k+1)-1
或2^k=<100<2^(k+1)
(上下两式是相等的)
其中2^k为完全二叉树的第k层的最多结点个数
解得k=100即k=[log2
100]=6
如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快!
vae.la

回答(3):

答案是350

1+2+4+。。。=699
所以共有
10层
第9层有256个前9层的和为511

所以第10层有

699-511=188个结点
共有结点
188+(256-188/2)=350个结点

回答(4):

完全二叉树只有最后一层可以是不能满的(而且其叶子结点要全部靠右)。699
显然在511
和1023之间。因此最后一层的叶子节点为:699
-
511(9层满二叉树的节点个数)
=
188,而这188个叶子结点一共占据了94个第九层节点,也就是说第九层还有有
255
-
94
=
161个节点是叶子结点。因此,总叶子结点数为188
+
161
=
349
完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。一棵二叉树至多只有最下面的一层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,而在最后一层上,右边的若干结点缺失的二叉树,则此二叉树成为完全二叉树。

回答(5):

选A。
  完全二叉树只有最后一层可以是不能满的(而且其叶子结点要全部靠右)。699
显然在511
和1023之间。因此最后一层的叶子节点为:
  699
-
511(9层满二叉树的节点个数)
=
188(第十层叶子结点个数)
而这188个叶子结点一共占据了94个第九层节点,也就是说第九层还有有
255
-
94
=
161个节点是叶子结点。
因此,总叶子结点数为188
+
161
=
349