Appearance
题目
设一棵非空完全二叉树 T 的所有叶结点均位于同一层,且每个非叶结点都有 2 个子结点。若 T 有 k 个叶结点,则 T 的结点总数是( )。
错因
B
记成"叶结点数 × 2 等于总结点数"。它差的就是"减 1"——因为根那一层只有 1 个,不像其余层都翻倍。直觉上"k 个叶子,每个叶子的父亲算 1 个,再上去也算……"按贡献比例直接拍 2k 的人最常踩这个坑。
C
把题目和"按下标 索引的某种结构"混了。比如部分同学把 当成树的层数,错以为"满二叉树第 k 层有 个结点"——这个公式根本不存在(正确的是第 层有 个结点)。或者把树脑补成 的网格状结构。属于公式记忆错乱。
D
把题目里的 当成了层号而不是叶结点数。在满二叉树里,第 层(根为第 1 层)确实正好有 个结点,于是套上去得到 。但题目给的 k 是"叶结点数",不是层号——所以 D 答的是另一道题的答案。
总解析
题目描述的其实就是满二叉树:所有叶子在最深一层,所有非叶都有两个孩子。设这棵树深度为 (根为第 1 层,叶子在第 层)。
满二叉树两条基本性质:
- 第 层(叶层)共有 个叶结点 → 题目的 ;
- 整棵树共有 个结点。
把 改写:
或者更直观:每个叶结点的"数量贡献"按层翻倍递推回去——最后一层 个,倒数第二层 ,再上去 ……一直到 1,构成等比数列:
两种推法殊途同归。
最终答案是 A()。