女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

机器人画出一棵树,又在两个分支之间加了一条线。女孩发现现在可能绕圈了。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 连通且没有环
  2. 增加一条边可能出现环
  3. 一般图允许更复杂连接

树是图的一种特殊情况。

对无向树,任意两点之间恰有一条简单路径。一般图可能有多条路径,也可能有些点互相到不了。

01树和图是不是完全不同的东西?

不是。

树可以看成一种特殊的无向图。

它满足两个关键条件:

连通

任意两个节点之间都能找到路径。

无环

不存在绕一圈回到原点的简单环。

02一般图可以比树复杂在哪里?

连通、无环,常具有层级关系。

一般图

可以有环,可以不连通,连接关系更自由。

03树一定有根吗?

从纯图论角度看,一棵无根树并不一定指定根。

在程序和算法中,我们经常人为选择一个节点作为,于是就能描述父子、深度和子树。

04树为什么任意两点只有一条简单路径?

因为如果两个点之间存在两条不同简单路径,把它们组合起来就会形成环,这和树“无环”的性质矛盾。

05图里的节点有父亲和孩子吗?

一般图本身没有天然的父子关系。

只有在搜索、生成树或特定有向结构中,我们才可能人为建立“父节点”概念。

06树和图的遍历为什么都能用 DFS / BFS?

因为两者本质上都是“节点 + 边”的连接结构。

DFS 和 BFS 都是在沿着边访问节点,只是访问顺序不同。

图可能有环,所以遍历图时通常尤其需要 visited 记录已访问节点。

你已经知道了什么

  • 树可以看成特殊的图。
  • 树要求连通且无环。
  • 一般图可以有环,也可以不连通。
  • 树的根常是人为指定的观察起点。
  • 一般图没有天然父子关系。
  • DFS/BFS 都可以用于树和图,但图中要特别注意重复访问。

下一篇:怎样为问题选择合适的数据结构?

轮到你来试一试

两个互不连接的点,没有环,能称为一棵无向树吗?

想好了吗?点开看解释

不能,因为不连通。树同时要求连通与无环。