- 在非空二叉树第i层中至多有2^i个结点(i>=0)
第0层至多有一个根结点
- 高度为h的二叉树至多有(2^(h+1))-1个结点(h>=0)
高度为0只有一个根结点
- 对于任何非空二叉树T,如果其叶结点的个数n0,度数为2的结点个数为n2,那么n0=n2+1
叶结点(没有子结点的结点),度数为2(有左右2个子树)
- 满二叉树的叶结点比分支结点(度数不为0的结点)多一个
扩充二叉树:
扩充二叉树:对二叉树T,加入足够多的新叶结点,使T的原结点都变成度数为2的分支结点,得到的二叉树
称为T的扩充二叉树。扩充二叉树中新增的结点称为其外部结点,原树T的结点(注意包括根结点)称为其内部结点。空树的扩充二叉树
规定为空树
扩充二叉树的外部结点的个数比内部结点的个数多1
n = n - 1
- 扩充二叉树的外部路径长度E是从树根到树中各外部结点的路径长度之和,
内部路径长度I是从树根到树中各内部结点的路径长度之和。
如果该树有n个内部结点,那么E=I+2*n
完全二叉树:
对于一棵高度为h的二叉树,如果其第0层至第h-1层的结点都满(也就是说,对所有0<=i<=h-1,第i层有
2^i个结点),如果最下一层的结点不满,则所有结点在最左边连续排列,空位都在右边,这样的二叉树就是一
棵完全二叉树。
完全二叉树,除了最下两层外,其余层都是度数为2的分支结点,而且除了最右的分支结点度数可能为1外,其余分支结点的度数均为2
- n个结点的完全二叉树高度h=|_log2n_| ,即为不大于log2n的最大整数
- 如果n个结点的完全二叉树的结点按层次并按从左到右的顺序从0开始编号,对任一结点i(0<=i<=n-1)都有:
* 序号为0的结点是根
* 对于i>0,其父结点的编号是(i-1)/2
* 若2*i+1<n,其左子结点序号为2*i+1,否则它无左子结点
* 若2*i+2<n,其右子结点序号为2*i+2,否则它无右子结点
二叉树的遍历:
深度优先遍历:
- 先根序遍历:按照根,左子树,右子树顺序
- 中根序遍历(对称序):按照左子树,根,右子树顺序
- 后根序遍历:按照左子树,右子树,根顺序
由于二叉树的子树也是二叉树,将一种具体的遍历顺序继续运用到子树的遍历中,在遍历过程中遇到子树为空的情况,就立即结束处理并转去继续做下一步工作,如先根序列遍历中遇到左子树为空,就转去遍历相应的右子树
先根序遍历(先根序列):ABDHEICFJKG
中根序遍历(中根序列): DHBEIAJFKCG
后根序遍历(后根序列): HDIEBJKFGCA
如果知道了一棵二叉树的对称序列,又知道另一遍历序列,就可以唯一确定这个二叉树
宽度优先遍历:
就是按层次顺序遍历
ABCDEFGHIJK