完全二叉树是一种特殊的二叉树,满足以下要求:
1.所有叶子节点都出现在 k 或者 k-1 层,而且从 1 到 k-1 层必须达到最大节点数;
2. 第 k 层可以不是满的,但是第 k 层的所有节点必须集中在最左边。
需要注意的是不要把完全二叉树和“满二叉树”搞混了,完全二叉树不要求所有树都有左右子树,但它要求:
3. 任何一个节点不能只有右子树没有左子树
4. 叶子节点出现在最后一层或者倒数第二层,不能再往上
用一张图对比下“完全二叉树”和“满二叉树”:
完全二叉树使用场景:
根据前面的学习,我们了解到完全二叉树的特点是:“叶子节点的位置比较规律”。因此在对数据进行排序或者查找时可以用到它,比如堆排序就使用了它。
二、二叉查找树、平衡二叉查找树、红黑树