Complete Binary Tree
完全二叉树
当一棵二叉树的结点与同高度满二叉树中编号 1..n 的结点一一对应时,称为完全二叉树。
定义的等价理解
完全二叉树可以理解为:从满二叉树最下一层的最右侧开始,连续删去若干结点后得到的二叉树。
也可以按层序扫描理解:
- 从上到下、从左到右依次编号。
- 结点编号必须连续占据
1..n。 - 一旦层序位置上出现空缺,后面不能再出现非空结点。
特点
- 只有最后两层可能有叶子结点。
- 最多只有一个度为 1 的结点。
- 如果某结点只有一个孩子,则一定是左孩子。
- 按层序编号后,仍满足左孩子
2i、右孩子2i+1、双亲 $\lfloor i/2\rfloor$。 i <= ⌊n/2⌋的结点是分支结点,i > ⌊n/2⌋的结点是叶子结点。
常见判断错误
若某个结点没有左孩子却有右孩子,则一定不是完全二叉树。
若最后一层中间出现空位,而右侧还有结点,也不是完全二叉树。完全二叉树的最后一层必须从左向右连续填充。
完全二叉树的高度、叶子数、度为 1 的结点数等推导见二叉树常考性质。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elian's blog page!