408 数据结构|完全二叉树两道典型题:第 6 层叶结点数与叶结点总数

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

结论

  • 第 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 题的"最少"是核心关键词。

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

复制代码
能不能直接让这一层成为最后一层?
相关推荐
小智老师PMP1 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN1 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a187927218311 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤2 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
文心快码BaiduComate2 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran3 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分
闻缺陷则喜何志丹3 小时前
【栈 运算系统】P3719 [AHOI2017初中组] rexp|普及+
c++·算法··洛谷·运算系统
疯狂打码的少年3 小时前
【数据库技术】多值依赖与第四范式(4NF)
数据库·笔记·算法
子文雨3 小时前
基于 uC3845 与 ATtiny13 双芯片架构的 8.4V/2.5Ah 锂电池智能充电器设计
单片机·嵌入式硬件·算法
青山木4 小时前
Hot 100 --- 数组中的第K个最大元素
java·数据结构·算法·排序算法