树的节点数,其中每个节点有两个子节点

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可以存在。

对于图 1,d=1; 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

希望这会有所帮助。

【讨论】:

以上是关于树的节点数,其中每个节点有两个子节点的主要内容,如果未能解决你的问题,请参考以下文章

计算特定XML节点c#的子节点数[重复]

某二叉树共有13个节点,其中有4个度为1的节点,则叶子节点数为多少

搜索练习2

[JLOI2012]树

AcWing 给树染色

2021-07-11:给定一个棵完全二叉树,返回这棵树的节点个数,要求时间复杂度小于O(树的节点数)。