数据结构

图论中的有根树

从你电脑里的文件到这个页面的 HTML,有根树默默地组织着数字世界。下面就来看看它们是如何工作的。

阅读需要 9 分钟 更新时间:2026年6月 中级水平
LGT
Learn Graph Theory Team
Expert Operations Research Engineers

1. 什么是有根树?

在图论中,是一个无环的连通图。有根树就是其中选定了一个特殊顶点作为的树。这一个选择就让其他所有节点有了清晰的"上"(朝向根)与"下"(远离根)之分,把一棵普通的树变成了一种层级结构。

一个有用的事实:含 n 个节点的树总是恰好有 n - 1 条边,且任意两个节点之间恰好存在一条路径——不多不少。

2. 关键术语

3. 有根树与无根树

无根树只描述哪些节点相连——没有上下之分。一旦你选定一个根,同一组边便有了方向:现在可以把边理解为从根指向外侧,于是有根树就像一种特殊的有向图。选择不同的根,会从同一棵底层树得到不同的层级结构。

看树动起来

构建一棵有根树,观看 DFS 和 BFS 遍历逐个节点点亮。深度、高度和父子关系会一下子变得清晰。

打开可视化工具

4. 有根树如何表示

在代码中存储有根树有三种常见方式:

5. 有根树的类型

6. 遍历有根树

访问每个节点称为遍历,主要有两大类:

如果这听起来很熟悉,那是因为它们正是用于一般图的相同策略。参见我们关于 BFS 与 DFS 的深入讲解。

7. 现实应用

常见问题

有根树和无根树有什么区别?

无根树只说明哪些节点相连。有根树指定一个节点为根,从而赋予树一种带有父子关系、有明确顶端的层级结构。

树的深度和高度有什么区别?

深度是从根到某个特定节点的距离(根的深度为 0)。高度是从某节点到其最深叶子的距离;树的高度即根的高度。

有根树是有向图吗?

可以这样看待。一旦选定了根,每条边都隐式地从根指向外侧,使每个非根节点恰好有一个父节点。

含 n 个节点的树有多少条边?

恰好 n - 1 条。再添加任何一条边都会形成环,而树按定义是无环的。

进一步探索

种出你自己的树

理解有根树最快的方法就是亲手构建并遍历一棵。创建节点、设定根,然后看着结构活起来。

打开可视化工具