【发布时间】:2020-07-02 00:18:24
【问题描述】:
给定一个邻接矩阵,有没有办法确定图是树还是图(是否有循环)。
例如,给定邻接矩阵:
0 1 0 1
1 0 0 1
0 0 0 1
1 1 1 0
这不是一棵树,因为在顶点 1、顶点 2 和顶点 4 之间存在一个循环。
鉴于邻接矩阵:
0 0 0 1
0 0 0 1
0 0 0 1
1 1 1 0
这是一棵树,因为没有循环。
解决此问题的一种方法是执行 BFS,但我认为图的邻接矩阵和树的邻接矩阵之间可能存在视觉差异。
任何帮助将不胜感激!
【问题讨论】:
-
没有明显的视觉特征。选择只有一个 1 的行。那是一片叶子。然后首先搜索广度或深度,维护一组已经访问过的顶点。如果你多次遇到同一个节点,它就不是一棵树。请注意,矩阵可能不代表单个组件。在这种情况下,您需要一个外部循环来搜索下一片叶子。
标签: algorithm graph tree graph-theory traversal