二叉树
二叉树是结点的有穷集合。这个集合或者为空,或者其中有一个称为根结点的特殊结点,其余结点分属两个互不相交的二叉树,这两棵子树分别是原二叉树的左子树和右子树。
特征
- 二叉树中的每个结点至多有两个子结点
- 结点关联的后继结点明确的分为左结点和右结点
二叉树的性质
二叉树最重要的性质就是树的高度和树中可以容纳的最大结点个数之间的关系。
- 在非空二叉树第
i
层最多有 2i 个结点(i >= 0) - 高度为
h
的二叉树最多有 2h+1-1 个结点(h>=0) - 对于任何非空二叉树
T
, 如果其叶结点的个数为 n0,度数为 2 的结点的个数为 n2,则 n0 = n2 + 1
满二叉树
如果二叉树中所有分支结点的度数都为 2,则称它为一棵满二叉树
满二叉树性质
- 满二叉树里的叶子结点比分支结点多一个
扩充二叉树
对二叉树 T,加入足够多的新叶结点,使 T 的原有结点都变成度数为 2 的分支节点,得到的二叉树称为 T 扩充二叉树。扩充二叉树中新增的结点称为外部结点,原树 T 的结点称为其内部节点。空树的扩充二叉树为空树。
扩充二叉树都是满二叉树。
扩充二叉树性质
扩充二叉树的外部路径长度 E 是从树根到树中各外部结点的路径长度之和,扩充二叉树额内部路径长度 I 是从树根到树中各内部节点的路径长度之和。如果该树有 n 个内部节点,则 E = I + 2*n
完全二叉树
对于一棵高度为 h 的二叉树,如果其第 0 层至第 h-1 层的结点都满,如果最下一层的节点不满,则所有结点在最左边连续排列,空位都在右边。这样的二叉树就是一棵完全二叉树。
完全二叉树性质
- n 个结点的完全二叉树高度 h <= log2n
- 如果 n 个结点的完全二叉树的结点按层次并按从左到右的顺序从 0 开始编号,对任一结点 i (0<=i<=n-1)都有:
- 序号为0的结点是根结点
- 对于i>0,其父结点的编号是 (i-1)/2
- 若2i+1<n, 其左子结点的序号为2i+1, 否则无左子节点
- 若2i+2<n, 其右子结点的序号为2i+2, 否则无右子结点