计算左子树规模(结点个数),找出树的根结点

简介: 简单的计算公式教你找出左子树到底有多少个娃,也会与你一起寻找根结点,快来看看呀


image.gif编辑

1.完美二叉树总结点数为image.gif编辑


2.我们要计算一棵树有多少层,则可以分成完美二叉树image.gif编辑

和最下层结点个数Ximage.gif编辑这两部分,层数通过求log来计算

image.gif编辑

因为X不影响计算,所以可以把它去掉,然后向下取整得出H的值image.gif编辑


3.此时我们就可以从红色三角处开始计算左子树个数image.gif编辑

由图可知,在树的最后一层可以没有任何结点,形成完全二叉树,X最小值就可以取为0;

图中这棵树有三个结点,X即为3;

最大值就参考计算第一部分完美二叉树每一层结点数公式image.gif编辑

要求的是左子树的X部分,所以左边部分结点只有处于满结点时的一半,由图可以看出,可以直接视为上一层的最大结点数

image.gif编辑

 

当X小于image.gif编辑时,左子树最后一层的X就是此值;

当X大于image.gif编辑时,最大就只能取到 X=image.gif编辑

所以有image.gif编辑


4.最后一步,我们将左边红色三角这块完美二叉树结点数+X,就能得到左子树的结点个数了

此时我们在数组中找到 左子树结点数+1 所对应的那个元素就是我们的根结点了

image.gif编辑

假设左子树结点数为5,这棵树的根结点就为5+1=6,即第二个8为根结点

相关文章
|
28天前
|
算法 C++ 开发者
【C/C++ 数据结构 】二叉树基本性质:对于任何一颗二叉树T,若其终端结点为n0 ,那么度数为2的结点数为n2。则n0=n2+1...
【C/C++ 数据结构 】二叉树基本性质:对于任何一颗二叉树T,若其终端结点为n0 ,那么度数为2的结点数为n2。则n0=n2+1...
16 0
|
4月前
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
|
4月前
|
算法
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
|
5月前
二叉树子树结点个数
二叉树子树结点个数
27 0
|
10月前
|
算法 安全
二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)
二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)
176 0
|
Java
输入一棵二叉树,判断该二叉树是否是平衡二叉树(Java版)/输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(Java版)
输入一棵二叉树,判断该二叉树是否是平衡二叉树(Java版)/输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(Java版)
103 0
Day16——二叉树的最大深度、二叉树的最小深度、完全二叉树的节点个数
Day16——二叉树的最大深度、二叉树的最小深度、完全二叉树的节点个数
96 0
Day17——平衡二叉树、二叉树所有路径、左叶子之和
Day17——平衡二叉树、二叉树所有路径、左叶子之和
107 0

热门文章

最新文章