跳转至

方法速览

任务 方法 口诀
判断是不是树 连通 + 无环(n 点恰好 n−1 边且连通) 连通无环就是树
点与边 n 个结点的树恰有 \(n-1\) 条边 点数减一
度数方程 \(\sum \text{度} = 2(n-1)\)(每条边贡献两个度) 度和是边数两倍
森林 m 棵树、n 个点 → \(n - m\) 条边 树数也扣
找父 / 找子 父亲表示法找父 O(1);孩子表示法找子快 父快用父表,子快用子表

树的基本概念

是连通且无环的无向图。家族称谓:

称谓 含义
没有父亲的结点(画在顶上)
父亲(双亲) 指向自己的那个结点——每个非根结点恰有一个父亲
孩子 自己指向的结点
兄弟 同一个父亲的结点
叶子(终端结点) 度为 0(没有孩子)的结点
分支结点 度 ≥ 1 的非叶结点
森林 m 棵互不相连的树

三条硬结论:

  • 没有环——任意两点之间恰有一条路径;
  • n 个结点的树恰有 \(n - 1\) 条边;
  • 度数方程\(\sum \deg = 2(n-1)\)(每条边给两端各贡献 1 度)。

:n = 13 的树,有 3 个度为 3 的结点、5 个度为 2 的结点,求叶子数。设叶子 x 个:\(3\times3 + 5\times2 + x = 2\times(13-1) = 24\),解得 \(x = 5\)——先数非叶结点的度,剩下的度全给叶子。

二叉树是“每个结点至多两个孩子”的树(左右孩子有区别)——注意二叉树与“度为 2 的树”不同:二叉树允许只有左孩子/为空,且子树有左右之分(详细性质见二叉树页)。

删边成树:n 点 m 边的连通图要变成树,保留 \(n-1\) 条、删去 \(m-(n-1) = m-n+1\) 条。

树的存储方式

存储法 结构 找父亲 找孩子
父亲表示法 parent[i] 存 i 的父亲编号(根存 0 或 −1) \(O(1)\) 要扫全表 \(O(n)\)
孩子表示法 每个结点挂一个孩子链表(或 vector<int> 要扫全表 \(O(\text{孩子数})\)
孩子兄弟表示法 每结点两个指针:第一个孩子 + 右兄弟 森林/树转二叉结构

(父亲表示法,下标从 1 开始):

结点 i 1 2 3 4 5
parent[i] 0 1 1 2 2

根是 1(父亲为 0);4、5 的父亲是 2——从任意结点顺 parent 向上走就到根,判根、求祖先都是 O(树高)。

竞赛里最常用的是 vector 邻接表存无向树(每条边存两次),DFS/BFS 遍历。

练习题目

练习 1 · 树的定义

题目

下列关于树的说法,错误的是( )

  • A. 树是连通的无环图
  • B. 树中任意两点之间恰有一条路径
  • C. 树中可能存在环
  • D. 树中每个非根结点恰有一个父亲
答案与解析

答案:C

无环是树的定义成分;有环就成了普通图。

练习 2 · 点数与边数

题目

一棵 100 个结点的树有( )条边。

  • A. \(100\)
  • B. \(101\)
  • C. \(99\)
  • D. \(50\)
答案与解析

答案:C

n 点恰 \(n-1\) 条边。

练习 3 · 由边数反推点数

题目

一棵树有 37 条边,则结点数为( )

  • A. \(36\)
  • B. \(37\)
  • C. \(74\)
  • D. \(38\)
答案与解析

答案:D

结点 = 边 + 1 = 38。

练习 4 · 度数和

题目

10 个结点的树,所有结点的度数之和为( )

  • A. \(9\)
  • B. \(10\)
  • C. \(20\)
  • D. \(18\)
答案与解析

答案:D

\(\sum \deg = 2(n-1) = 18\)——每条边给两端各记 1 度。

练习 5 · 度数方程求叶子

题目

一棵 13 个结点的树中,有 3 个度为 3 的结点、5 个度为 2 的结点,其余为叶子。叶子有( )个。

  • A. \(5\)
  • B. \(4\)
  • C. \(6\)
  • D. \(8\)
答案与解析

答案:A

\(\sum\deg = 2\times12 = 24\);非叶贡献 \(3\times3 + 5\times2 = 19\),叶子贡献 \(24 - 19 = 5\)(每个叶子 1 度)→ 5 个,且 \(3+5+5 = 13\) 对账成功。

练习 6 · 叶子的度

题目

树中“叶子结点”的度数是( )

  • A. \(2\)
  • B. \(1\)
  • C. \(0\)
  • D. 不确定
答案与解析

答案:C

叶子 = 没有孩子 = 度为 0。(注意根若只有一个孩子,它在“有根树”里度数为 1,不算叶子。)

练习 7 · 父亲的唯一性

题目

关于树中结点的父亲( )

  • A. 每个结点都恰好有一个父亲
  • B. 根结点没有父亲,其余结点恰有一个父亲
  • C. 一个结点可以有多个父亲
  • D. 叶子没有父亲
答案与解析

答案:B

根没有父亲;其余结点“到根的路径上倒数第二个”就是唯一父亲。C 多父亲成图(有环或非树)。

练习 8 · 兄弟的定义

题目

结点 A、B 是兄弟,当且仅当( )

  • A. A 是 B 的祖先
  • B. A、B 都是叶子
  • C. A、B 在同一层
  • D. A、B 有同一个父亲
答案与解析

答案:D

兄弟 = 同父;同层不一定是兄弟(堂兄弟)。

练习 9 · 森林的边数

题目

由 3 棵树组成的森林共有 20 个结点,边数为( )

  • A. \(17\)
  • B. \(18\)
  • C. \(19\)
  • D. \(20\)
答案与解析

答案:A

每棵树“点 − 1”条边:\(20 - 3 = 17\)

练习 10 · 森林与树的关系

题目

含 n 个结点、m 棵树的森林,再添加( )条边可以变成一棵树。

  • A. \(m\)
  • B. \(n - m\)
  • C. \(m - 1\)
  • D. \(n - 1\)
答案与解析

答案:C

把 m 棵树串成一棵,需要 m−1 条“桥”边。

练习 11 · 删边成树

题目

有 6 个顶点、9 条边的连通无向图,至少删去( )条边才能变成一棵树。

  • A. \(3\)
  • B. \(4\)
  • C. \(5\)
  • D. \(6\)
答案与解析

答案:B

树只需 \(6-1=5\) 条边,删 \(9-5 = 4\) 条,即 \(m-n+1\)

练习 12 · 环的判定

题目

n 个结点的无向图有 \(n\) 条边,则它( )

  • A. 一定是树
  • B. 一定是森林
  • C. 一定不是树
  • D. 可能是树
答案与解析

答案:C

树恰有 \(n-1\) 条边;n 条边必然含环(连通与否都多了一条)。

练习 13 · 二叉树的定位

题目

二叉树是( )

  • A. 每个结点恰好有两个孩子的树
  • B. 任何无环图
  • C. 度为 2 的树
  • D. 每个结点至多有两个孩子、且子树分左右的树
答案与解析

答案:D

“至多”+“分左右”两个要点:结点可以只有左孩子;这是它与一般“度为 2 的树”的区别。

练习 14 · 三叉树的每层上限

题目

三叉树(每个结点至多 3 个孩子)第 5 层(根为第 1 层)最多有( )个结点。

  • A. \(27\)
  • B. \(81\)
  • C. \(243\)
  • D. \(15\)
答案与解析

答案:B

第 i 层最多 \(3^{i-1}\)\(3^4 = 81\)

练习 15 · 三叉树高度下界

题目

根的高度为 1,一棵 100 个结点的三叉树高度至少为( )

  • A. \(5\)
  • B. \(4\)
  • C. \(6\)
  • D. \(7\)
答案与解析

答案:A

高度 h 最多容纳 \(\dfrac{3^h - 1}{2}\) 个结点:h=4 时 \(\frac{81-1}{2} = 40 < 100\);h=5 时 \(\frac{243-1}{2} = 121 \ge 100\) → 至少 5。

练习 16 · 父亲表示法找父亲

题目

父亲表示法 parent[i] 存每个结点的父亲,找结点 7 的父亲需( )

  • A. 做不到
  • B. \(O(n)\)——扫描全表
  • C. \(O(\log n)\)
  • D. \(O(1)\)——直接读 parent[7]
答案与解析

答案:D

父亲就存在数组里,一步读到;代价是找孩子要扫全表。

练习 17 · 父亲表示法找孩子

题目

用父亲表示法,要列出结点 v 的所有孩子,需要( )

  • A. \(O(n)\) 扫描整个 parent 数组
  • B. \(O(1)\)
  • C. \(O(\deg v)\)
  • D. \(O(1)\) 但要递归
答案与解析

答案:A

孩子没被直接存,只能找“所有 parent[i] == v 的 i”,扫全表。

练习 18 · 孩子表示法

题目

孩子表示法(每个结点挂孩子链表)的优势是( )

  • A. 找父亲 O(1)
  • B. 访问某结点的所有孩子高效
  • C. 省一半内存
  • D. 树变成二叉树
答案与解析

答案:B

孩子直接挂链上,逐个遍历即可;但找父亲要扫全表——与父亲表示法互为镜像。

练习 19 · 选存储的依据

题目

应用需要频繁“从结点向上走到根”,最合适的存储是( )

  • A. 父亲表示法
  • B. 孩子表示法
  • C. 邻接矩阵
  • D. 孩子兄弟表示法
答案与解析

答案:A

沿 parent 一路向上,每步 O(1),共 O(树高)。

练习 20 · 父亲表示法的根

题目

父亲表示法中,通常把根的 parent 值设为( )

  • A. \(1\)
  • B. 它自己
  • C. \(0\)(或 \(-1\))——一个不会撞上真实结点的标记
  • D. 树的高度
答案与解析

答案:C

0 / −1 表示“没有父亲”,用来识别根、终止向上的遍历。设成自己会死循环。

练习 21 · 孩子兄弟表示法

题目

孩子兄弟表示法中,每个结点的两个指针分别指向( )

  • A. 父亲和母亲
  • B. 第一个孩子和右邻的兄弟
  • C. 左右两个孩子
  • D. 前驱和后继
答案与解析

答案:B

“第一个孩子 + 右兄弟”两根指针,能把任何树/森林转成二叉结构处理。

练习 22 · 树 vs 图

题目

树与一般图的本质区别( )

  • A. 树的结点更少
  • B. 树连通且无环;一般图可以有环、可不连通
  • C. 树不能用邻接表存
  • D. 图有向、树无向
答案与解析

答案:B

树是图的特例:连通 + 无环 + n−1 边三者互相推出。

练习 23 · 结点数与祖先

题目

一棵树中,从根到某叶子的路径上有 6 个结点,该叶子的深度(根深度为 1)是( )

  • A. \(5\)
  • B. \(12\)
  • C. \(7\)
  • D. \(6\)
答案与解析

答案:D

路径上有几个结点,深度就是几:根(1)到叶(6)。

练习 24 · 树的边数下界

题目

n 个结点的连通图至少要( )条边。

  • A. \(n\)
  • B. \(n-2\)
  • C. \(n-1\)
  • D. \(\frac{n(n-1)}{2}\)
答案与解析

答案:C

连通最少 = 树 = n−1 条;再少必不连通。

练习 25 · 完全图的边数对比

题目

8 个结点的无向完全图有 28 条边,把它变成一棵树要删( )条边。

  • A. \(21\)
  • B. \(20\)
  • C. \(27\)
  • D. \(7\)
答案与解析

答案:A

树保留 7 条:\(28 - 7 = 21\) 条被删,即 \(m - n + 1\)

练习 26 · 综合判断

题目

n = 5 的无向图有 4 条边且连通,则它( )

  • A. 一定有环
  • B. 是一棵树
  • C. 是森林但不是树
  • D. 无法确定
答案与解析

答案:B

连通 + 恰 \(n-1\) 条边 = 树(此时无环自动成立)。

历年真题

2021 年 · 第 6 题

题目

对于有 \(n\) 个顶点、\(m\) 条边的无向连通图 (\(m > n\)),需要删掉( )条边才能使其成为一棵树。

  • A. n - 1
  • B. m - n
  • C. m - n - 1
  • D. m - n + 1
答案与解析

答案:D

树保留 \(n-1\) 条边,删去 \(m - (n-1) = m - n + 1\) 条。

干扰项思路:B 是 \(m-n\)(把“保留 n−1”算成“保留 n”的差一错误)。

2023 年 · 第 5 题

题目

根节点的高度为 \(1\),一棵拥有 \(2023\) 个节点的三叉树高度至少为( )。

  • A. \(6\)
  • B. \(7\)
  • C. \(8\)
  • D. \(9\)
答案与解析

答案:C

高度 h 的三叉树最多 \(\dfrac{3^h - 1}{2}\) 个结点(等比求和 \(1 + 3 + \dots + 3^{h-1}\)):

h 最大结点数 \(\frac{3^h-1}{2}\)
7 \(1093 < 2023\)
8 \(3280 \ge 2023\)

装下 2023 个结点至少要高度 8。

易错小结

  • 树 = 连通无环,n 点恰 \(n-1\) 边;三条件知二推一;
  • 度数方程 \(\sum\deg = 2(n-1)\):已知各度结点数求叶子,先算非叶的度、余数除以 1;
  • 删边成树删 \(m - n + 1\) 条(连通图);森林 n 点 m 棵树 \(n - m\) 条边,串成树再补 m−1 条;
  • 父亲表示法找父 O(1) 找子 O(n),孩子表示法正相反——按“频繁问什么”选存储;
  • 二叉树是“至多两孩子 + 分左右”,不是“度为 2 的树”;
  • 三叉树(m 叉树)高度 h 最多 \(\frac{3^h - 1}{2}\)(一般式 \(\frac{m^h - 1}{m - 1}\))个结点。