完全二叉树的叶子节点数公式是什么?
完全二叉树的叶子节点数公式为:
设叶子节点数为n0, 度为1的节点数为n1,度为2的节点数为n2,总节点为n。
1、当n为奇数时(即度为1的节点为0个),n0= (n+1)/2。
2、当n为偶数(即度为1的节点为1个), n0= n/2。
n1,n2,都可以求。
特殊类型:
1、满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。
2、完全二叉树:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称为完全二叉树。
3、完全二叉树的特点是叶子结点只可能出现在层序最大的两层上,并且某个结点的左分支下子孙的最大层序与右分支下子孙的最大层序相等或大1。
相关术语:
1、结点:包含一个数据元素及若干指向子树分支的信息。
2、结点的度:一个结点拥有子树的数目称为结点的度。
3、叶子结点:也称为终端结点,没有子树的结点或者度为零的结点。
4、结点的层次:从根结点开始,假设根结点为第1层,根结点的子节点为第2层,依此类推,如果某一个结点位于第L层,则其子节点位于第L+1层。
5、树的深度:也称为树的高度,树中所有结点的层次最大值称为树的深度。
以上内容参考 百度百科-二叉树
n0=(n+1)/2
设:度为i的结点数为ni,由二叉树的性质可知:
n0 = n2 + 1……………………①式
n = n0 + n1 + n2……………②式
由①式可得 n2 = n0 - 1,带入②式得:
n0 = (n + 1 - n1)/ 2
由完全二叉树性质可知:
如图,当n为偶数时,n1 = 1, n0 = n / 2
如图,当n为奇数时,n1 = 0,n0 = (n + 1)/2
将两式合并,写作:n0 = ⌊(n+1)/2⌋(向下取整符号不能丢)
二叉树的存储结构
按照某种遍历方式对二叉树进行遍历,可以把二叉树中所有结点排列为一个线性序列。在该序列中,除第一个结点外,每个结点有且仅有一个直接前驱结点;除最后一个结点外,每个结点有且仅有一个直接后继结点。
但是,二叉树中每个结点在这个序列中的直接前驱结点和直接后继结点是什么,二叉树的存储结构中并没有反映出来,只能在对二叉树遍历的动态过程中得到这些信息。为了保留结点在某种遍历序列中直接前驱和直接后继的位置信息,可以利用二叉树的二叉链表存储结构中的那些空指针域来指示。
L = n2
其中,L表示叶子节点数,n表示完全二叉树的节点总数(包括叶子节点和非叶子节点)。
这个公式的推导过程如下:
1. 对于一棵深度为h的完全二叉树,最后一层节点的个数为2^h-1,因为完全二叉树的特性是最后一层节点总是填满的。
2. 除去最后一层节点,剩下的节点数为n-1,这些节点构成了深度为h-1的子树。
3. 因为深度为h-1的子树也是完全二叉树,所以根据上面的推导过程,它的最后一层节点的个数也为2^(h-1)-1。
4. 整个深度为h的完全二叉树的节点数可以表示为:
n = 2^h-1 + n-1
5. 当h>1时,化简上式得到:
n = (2^h-1) + 1
= 2^h
6. 因为最后一层节点都是叶子节点,所以叶子节点数为2^h-1,即L = n2。
需要注意的是,这个公式只适用于完全二叉树,对于其他类型的二叉树(比如满二叉树、平衡二叉树、普通二叉树等)并不适用。