Skip to content

2011年 408 数据结构 第 6 题

数据结构2011年选择题2分

题目

已知一棵有 2011 个结点的树,其叶结点个数为 116,该树对应的二叉树中无右孩子的结点个数是( )。

错因

A

凭"叶子数 116 减 1"凑了 115,思路混乱。"无右孩子"和"原树叶子"完全是两个概念,不能直接做减法。

B

误以为"无右孩子"等同于"原树是叶子"。但叶子在转换后是否有右孩子取决于它在父的孩子列表中的位置——只有"最后一个孩子"才无右兄弟(即转换后无右孩子)。叶子若不是最后一个孩子,转换后仍有右孩子。

C

算对了"非叶节点对应的最后一个孩子数 = 非叶节点数 = 2011 − 116 = 1895",但忘了根节点本身也无右孩子。根没有兄弟,转换后必然无右兄弟(即无右孩子)。要再加 1 得 1896。

总解析

树→二叉树(左孩子右兄弟法)的对应关系

  • 二叉树节点的右孩子 = 原树中该节点的下一个兄弟
  • 转换后无右孩子 ⟺ 原树中是父的最后一个孩子,或是根节点

计数

  • 非叶节点(即至少有一个孩子的节点)= 2011 − 116 = 1895 个
  • 每个非叶节点都恰好贡献 1 个"最后一个孩子"——这些孩子在原树中是兄弟序列的末尾,转换后无右兄弟
  • 所以非根节点中无右孩子的有 1895 个
  • 加上根节点(根没有兄弟):

最终答案是 D

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数