Appearance
题目
已知一棵有 2011 个结点的树,其叶结点个数为 116,该树对应的二叉树中无右孩子的结点个数是( )。
错因
A
凭"叶子数 116 减 1"凑了 115,思路混乱。"无右孩子"和"原树叶子"完全是两个概念,不能直接做减法。
B
误以为"无右孩子"等同于"原树是叶子"。但叶子在转换后是否有右孩子取决于它在父的孩子列表中的位置——只有"最后一个孩子"才无右兄弟(即转换后无右孩子)。叶子若不是最后一个孩子,转换后仍有右孩子。
C
算对了"非叶节点对应的最后一个孩子数 = 非叶节点数 = 2011 − 116 = 1895",但忘了根节点本身也无右孩子。根没有兄弟,转换后必然无右兄弟(即无右孩子)。要再加 1 得 1896。
总解析
树→二叉树(左孩子右兄弟法)的对应关系:
- 二叉树节点的右孩子 = 原树中该节点的下一个兄弟
- 转换后无右孩子 ⟺ 原树中是父的最后一个孩子,或是根节点
计数:
- 非叶节点(即至少有一个孩子的节点)= 2011 − 116 = 1895 个
- 每个非叶节点都恰好贡献 1 个"最后一个孩子"——这些孩子在原树中是兄弟序列的末尾,转换后无右兄弟
- 所以非根节点中无右孩子的有 1895 个
- 加上根节点(根没有兄弟):
最终答案是 D。