完全二叉树(Complete Binary Tree)是一种特殊的二叉树,具有以下主要特点:
-
定义:
- 在一颗完全二叉树中,除了最后一层之外的所有层都被完全填满,并且最后一层的节点都尽可能地靠左。
-
结构特点:
-
对于一个高度为 h 的完全二叉树:
-
最多有
2^h -1
个节点。 -
叶子节点集中在最底层,最后一层的所有节点都在最左边的位置。
-
所有的叶子节点都在同一层或仅相差一层。
-
-
-
完美二叉树(Perfect Binary Tree) :
- 如果完全二叉树的最后一层也全部填满,则称为完美二叉树。完美二叉树的特点是每个非叶节点都有两个子节点,且所有叶节点在同一层。
-
数组表示:
-
完全二叉树非常适合用数组来表示。给定一个根节点为
index 0
的完全二叉树,其子节点的索引可以通过以下公式计算:-
左子节点的索引:
2×index+1
-
右子节点的索引:
2×index+2
-
-
-
高度和层数:
-
在完全二叉树中,高度h和节点数n的关系为:
-
2^{h−1}≤n<2^h
-
h = \lfloor \log_2n \rfloor + 1
或h = \lceil \log_2(n+1) \rceil
-
-
-
应用
- 完全二叉树在计算机科学中有许多重要的应用,包括堆(Heap)数据结构、优先队列等。
- 二叉堆是一种特殊的完全二叉树,其中每个节点的值都大于或等于其子节点的值(最大堆),或者小于或等于其子节点的值(最小堆)。
示例
以下是一个高度为3的完全二叉树示例:
1
/ \
2 3
/ \ /
4 5 6
在这个例子中:
- 第一层有1个节点。
- 第二层有2个节点。
- 第三层有3个节点,且所有节点都尽可能地靠左。