树的节点数,其中每个节点有两个子节点
Posted
技术标签:
【中文标题】树的节点数,其中每个节点有两个子节点【英文标题】:Number of nodes of a tree where each node has two children nodes 【发布时间】:2015-04-27 02:06:33 【问题描述】:我有一棵树,其形式如下:
在第一张图片上,树的高度为 1,总共有 3 个节点。下一个 7 分 2 分,最后一个 15 分 3 分。如何确定这种l
高度形式的树将有多少个节点?还有,那是什么树(有什么特别的名字吗?)?
【问题讨论】:
是完整的二叉树吗? 它既是完整的二叉树又是完整的二叉树......这使它成为完美的二叉树(请参阅我的回答中的***链接) 【参考方案1】:那是perfect binary tree
考虑到这种递归方法,您可以获得节点数:
n(0) = 1
n(l+1) = n(l) + 2^l
所以
n(l) = 2^(l+1) - 1
【讨论】:
【参考方案2】:深度为“d”的完全二叉树是严格的二叉树,其中所有的叶子都在 d 层。
对于 fig1,d=1 对于 fig2,d=2 对于 fig3,d=3因此,假设二叉树 T 的深度为 d
。那么T中最多
个节点2<sup>(d+1)</sup>-1
n
可以存在。
2<sup>(1+1)</sup>-1
=2<sup>(2)</sup>-1
=4-1
=3
对于图 2,d=2; 2<sup>(2+1)</sup>-1
=2<sup>(3)</sup>-1
=8-1
=7
对于图 3 d=3; 2<sup>(3+1)</sup>-1
=2<sup>(4)</sup>-1
=16-1
=15
树的高度(h
)和深度(d
)一棵树(从树的最长路径的长度根到叶节点)在数值上相等。
这是一个answer,详细说明了如何计算深度和高度。
【讨论】:
注意:否决票是由于发布了错误的方程式(混合了上标的 html 标签)。错误已更正。【参考方案3】:一棵完整树的节点数是……
n = 2^(h+1) - 1.
【讨论】:
【参考方案4】:您所描述的内容听起来像是“完美的二叉树”。 “二叉树是一种树数据结构,其中每个节点最多有两个孩子” http://en.wikipedia.org/wiki/Binary_tree 完美树是“所有叶节点都在相同深度的二叉树”。 http://xlinux.nist.gov/dads//HTML/perfectBinaryTree.html
完美二叉树中节点的最大数量 =2^(身高+1)-1
节点数到最小高度 =CEILING(LOG(nodes+1,2)-1,1)
可以在前面引用的 Wikipedia wiki 中找到与二叉树相关的定义。
【讨论】:
【参考方案5】:这个也可以这样理解。
如果是完美二叉树 叶节点总数为2^H(H = 树的高度)
内部节点总数为2^H - 1
因此,节点的总数将是 2^H + 2^H - 1,也就是其他人提到的 2^(H+1) - 1。
希望这会有所帮助。
【讨论】:
以上是关于树的节点数,其中每个节点有两个子节点的主要内容,如果未能解决你的问题,请参考以下文章