二叉树

 二叉树的三种遍历

 

 

 

 

 

二叉树概念

 相关术语

①节点:包含一个数据元素及若干指向子树分支的信息

②节点的度:一个节点拥有子树的数目称为节点的度

③叶子节点:也称为终端节点,没有子树的节点或者度为零的节点

④分支节点:也称为非终端节点,度不为零的节点称为非终端节点

⑤树的度:树中所有节点的度的最大值

⑥节点的层次:从根节点开始,假设根节点为第1层,根节点的子节点为第2层,依此类推,如果某一个节点位于第L层,则其子节点位于第L+1层

⑦树的深度:也称为树的高度,树中所有节点的层次最大值称为树的深度

 

二叉树的特殊形态

1、满二叉树:如果一棵二叉树只有度为0的节点和度为2的节点,并且度为0的节点在同一层上,则这棵二叉树为满二叉树

2、完全二叉树:深度为k,有n个节点的二叉树当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的节点一一对应时,称为完全二叉树

 

二叉树的有关计算

1.二叉树的深度和层数其实是一样的。
2.任意一棵树的总结点数等于总分支数+1
3.叶子结点也称叶子,度为0的结点。
4.一个深度为n的满二叉树的总结点数为 2^n-1(其实得出这个结论画个图就知道了,不难)
5.深度为h的完全二叉树至少有2^(h-1)个结点,最多有2^h-1个结点。

 

 

相关题目:
1.一棵二叉树第六层(根结点为第一层)的结点数最多为?
其实这道题很简单,就是2^5=32

2.某二叉树中度为2的结点有18个,则该二叉树中有多少个叶子结点?
根据总结点数=总分支数+1,设叶子有n个,则有
18 + n = 18*2 + 1
n = 19

3.设一棵完全二叉树共有199个结点,那么该二叉树共有个分支结点?
思路就是先求出这个完全二叉树的叶子数,然后用总结点数减去叶子数就是分支结点的数目了。
因为有 (2^7) - 1<199<=(2^8)-1
所以得深度为8,前7层为满二叉树,所以前7层的总结点数为(2^7) - 1 = 127 ,第7层的结点数为 2^6 = 64
则最后一层的叶子为 199 - 127 = 72 ,所以第7层的叶子数为 64 - 72/2 = 28
所以总叶子数为 72+28 = 100
分支数为 199 -100 = 99

4.在深度为7的二叉树中,最多有多少个叶结点?(注意这里问的是叶结点,而不是结点数,如果是结点数的话答案是(2^6)-1 )
这种题目和例子1差不多,为 2^6

5.设一棵完全二叉树共有127个结点,那么该二叉树是满二叉树吗?
因为 一个深度为n的满二叉树的总结点数为 2^(n-1)-1
则设 2^(n-1)-1 = 127
n = 8 ,所以这也是满二叉树。


6.具有53个结点的完全二叉树的深度为?
因为一个二叉树的结点数必然不会超过深度一样的满二叉树的结点数,所以有
(2^5)-1<53<=(2^6)-1
所以答案为6

7.设一棵完全二叉树共有700个结点,则在该二叉树中有多少个叶子结点?
从第五题延伸出来的题目,由例6的思路得, (2^9)-1<700<=(2^10) - 1
所以得这棵二叉树前面9层是满二叉树,则得前9层的总结点数为 (2^9)-1 = 512 -1 =511
则剩下来的结点数就是最后一层的结点数,为 700 - 511 = 189 ,把他凑成偶数为190,则也就是说,
最后一层是从第九层中 190/2= 95个结点延伸出来的,所以第九层失去了95个叶子,又因为第九层的
结点数为 2^8 = 256,则第九层的叶子数为 256 - 95,则所有的结点数为256-95 +189 =350

posted @ 2015-10-07 11:53  qilinart  阅读(938)  评论(0编辑  收藏  举报