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

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


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为根结点

相关文章
|
7月前
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
|
6月前
【树 - 平衡二叉树(AVL)】F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量
【树 - 平衡二叉树(AVL)】F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量
|
7月前
|
机器学习/深度学习 C++
初阶数据结构之---二叉树链式结构(二叉树的构建,二叉树的前序,中序,后序和层序遍历,计算二叉树结点个数,第k层结点个数,叶子结点个数,判断是否为完全二叉树)
初阶数据结构之---二叉树链式结构(二叉树的构建,二叉树的前序,中序,后序和层序遍历,计算二叉树结点个数,第k层结点个数,叶子结点个数,判断是否为完全二叉树)
|
7月前
|
算法
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
二叉树子树结点个数
二叉树子树结点个数
59 0
|
算法 安全
二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)
二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)
337 0
二叉树——222. 完全二叉树的节点个数
本专栏按照数组—链表—哈希—字符串—栈与队列—二叉树—回溯—贪心—动态规划—单调栈的顺序刷题,采用代码随想录所给的刷题顺序,一个正确的刷题顺序对算法学习是非常重要的,希望对大家有帮助
二叉树——222. 完全二叉树的节点个数
|
Java
输入一棵二叉树,判断该二叉树是否是平衡二叉树(Java版)/输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(Java版)
输入一棵二叉树,判断该二叉树是否是平衡二叉树(Java版)/输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。(Java版)
138 0
Day16——二叉树的最大深度、二叉树的最小深度、完全二叉树的节点个数
Day16——二叉树的最大深度、二叉树的最小深度、完全二叉树的节点个数
129 0