对应章节:数据结构 → 树与二叉树 → 完全二叉树

结论

  • 第 12 题:A. 39

  • 第 16 题:B. 248


一、先记住两个核心性质

性质 1:完全二叉树除最后一层外,其余各层必须填满

可以理解成:

除最后一层外:全部满
最后一层:允许不满,但必须从左到右连续排列

例如:

        ○
      /   \
     ○     ○
    / \   / \
   ○  ○  ○  ○
  / \ /
 ○  ○ ○

性质 2:完全二叉树的叶结点数

若总结点数为 n,则叶结点数为:

ceil(n / 2)

原因是按层序编号后:

1 ~ floor(n/2)      为非叶结点
floor(n/2)+1 ~ n    为叶结点

所以:

叶结点数
= n - floor(n/2)
= ceil(n/2)

二、第 12 题

题目:

已知一棵完全二叉树的第 6 层(根为第 1 层)有 8 个叶结点,则完全二叉树的结点个数最少是( )。

选项:

A. 39
B. 52
C. 111
D. 119

答案:

A. 39

为什么?

题目问的是“最少”。

为了让总结点数最少,最省结点的办法就是:

让第 6 层直接成为最后一层

这样第 6 层的 8 个结点全部都是叶结点,而且不需要再长第 7 层。

由于完全二叉树除最后一层外必须全满,所以:

第 1 层:1 个
第 2 层:2 个
第 3 层:4 个
第 4 层:8 个
第 5 层:16 个
第 6 层:8 个

因此总结点数:

1 + 2 + 4 + 8 + 16 + 8
= 31 + 8
= 39

所以选:

A. 39

图形理解

第1层                 ○                         1

第2层             ○       ○                     2

第3层          ○   ○   ○   ○                    4

第4层        …… 共 8 个 ……                      8

第5层        …… 共 16 个 ……                    16

第6层        ○ ○ ○ ○ ○ ○ ○ ○                   8
             ↑ 最后一层,从左往右连续

考场识别信号

看到:

完全二叉树
+
第 k 层有若干叶结点
+
问总结点数最少

优先尝试:

让第 k 层直接成为最后一层

三、第 16 题

题目:

一棵有 124 个叶结点的完全二叉树,最多有( )个结点。

选项:

A. 247
B. 248
C. 249
D. 250

答案:

B. 248

方法 1:直接用叶结点公式

完全二叉树中:

叶结点数 = ceil(n / 2)

题目给:

ceil(n / 2) = 124

那么 n 可能是:

247

因为:

ceil(247 / 2)
= ceil(123.5)
= 124

也可能是:

248

因为:

ceil(248 / 2)
= 124

所以:

n = 247 或 248

题目问“最多”,所以:

n = 248

答案:

B. 248

四、为什么 247 和 248 都可以?

完全二叉树中最多只有一个度为 1 的结点。

二叉树还满足:

n0 = n2 + 1

其中:

n0:叶结点数
n1:度为 1 的结点数
n2:度为 2 的结点数

现在:

n0 = 124

因此:

n2 = 123

如果:

n1 = 0

则:

n = n0 + n1 + n2
  = 124 + 0 + 123
  = 247

如果:

n1 = 1

则:

n = 124 + 1 + 123
  = 248

所以完全二叉树有 124 个叶结点时,总结点数只可能是:

247 或 248

问最多:

248

五、两题一起记

已知某层叶结点,问总结点数最少

尽量让这一层直接成为最后一层

第 12 题:

1 + 2 + 4 + 8 + 16 + 8
= 39

已知叶结点数 n0,问总结点数范围

完全二叉树:

总结点数 = 2n0 - 1
或
总结点数 = 2n0

因此:

最少 = 2n0 - 1
最多 = 2n0

第 16 题:

n0 = 124

最少 = 2×124 - 1 = 247
最多 = 2×124     = 248

六、复盘点

复盘点 1

完全二叉树不是满二叉树。

它只要求:

除最后一层外全部填满;
最后一层从左到右连续。

复盘点 2

已知叶结点数时,总结点数通常不唯一。

对于完全二叉树:

n = 2n0 - 1
或
n = 2n0

复盘点 3

第 12 题的“最少”是核心关键词。

一看到“某层有叶结点 + 求最少”,就要想到:

能不能直接让这一层成为最后一层?
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐