Course playlist
完全二叉树 是一种特殊的二叉树,它满足以下条件:
除最后一层外,其余所有层都是满的(即达到该层最大节点数)。
最后一层的所有节点都尽可能靠左排列。
这个定义可以更直观地理解为:如果给一棵深度为 h 的完全二叉树的所有节点从上到下、从左到右依次编号(从1开始),那么其节点编号序列是连续的,没有空档。
完全二叉树可以用一维数组高效存储,而不会浪费空间。
若将根节点编号为 1,则对任意节点 i (从 1 开始编号):
父节点编号为 ⌊i/2⌋
左孩子编号为 2i
右孩子编号为 2i+1
若将根节点编号为 1,则对任意节点 i (从 1 开始编号):
父节点编号为 ⌊i/2⌋
左孩子编号为 2i
右孩子编号为 2i+1
设完全二叉树的深度为 h(根节点为第1层),则:
前 h-1 层的节点总数为:2^(h-1) - 1
第 h 层至少有一个节点,至多有 2^(h-1) 个节点。
设总节点数为 n,则高度 h 可以通过以下公式计算: h=⌊log2n⌋+1
前 h-1 层的节点总数为:2^(h-1) - 1
第 h 层至少有一个节点,至多有 2^(h-1) 个节点。
设总节点数为 n,则高度 h 可以通过以下公式计算: h=⌊log2n⌋+1
所有叶子节点只可能出现在最后两层中。
度为1的节点最多只有1个,且该节点只有左孩子,没有右孩子。
度为1的节点最多只有1个,且该节点只有左孩子,没有右孩子。
满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。
一个有 n 个节点的完全二叉树,可以看作是由一个深度相同的满二叉树,从最后一个节点开始从右至左连续去掉若干个节点得到的。
一个有 n 个节点的完全二叉树,可以看作是由一个深度相同的满二叉树,从最后一个节点开始从右至左连续去掉若干个节点得到的。
| 题目 | 对/错/率 | 难度 | 记录 | 通过 |
|---|