Skip to content

2009年 408 数据结构 第 5 题

数据结构2009年选择题2分

题目

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

错因

A

把"第 6 层有 8 个叶结点"误读成"第 6 层 8 个节点",只算了第 1 层到第 6 层的节点数 1+2+4+8+16+8=39,完全忽略了第 7 层的存在。

B

意识到第 7 层存在,但第 6 层内部节点数当成了 8(把"叶子 8 个"和"非叶子 8 个"颠倒),算第 7 层时只用 8×2=16 个孩子,凑出 31+8+16=55 ≈ 52。本质是没分清"第 6 层 32 个里有 8 个叶子,剩下 24 个才是要往第 7 层延伸的内部节点"。

D

用了另一种方向的错误:认为一棵满 7 层的二叉树共 2⁷-1=127 个节点,然后从中减去 8(直接减去 8 个叶节点),得 127-8=119。实际上第 6 层有 8 个叶节点意味着这 8 个节点没有孩子,从满树中应该减去的是它们本应有的 2×8=16 个孩子,而不是 8 本身。

总解析

完全二叉树第 1 层到第 5 层必然全满,共 1+2+4+8+16=31 个节点。第 6 层最多有 2⁵=32 个节点,全部存在(因为树延伸到了第 7 层)。

第 6 层中有 8 个叶节点(没有孩子),其余 32-8=24 个节点是内部节点,各有 2 个孩子在第 7 层。

第 7 层节点数最多 = 24×2 = 48(在完全二叉树中,这 48 个节点从最左侧连续排列,条件满足)。

总节点数 = 31(前 5 层)+ 32(第 6 层)+ 48(第 7 层)= 111,答案 C

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题