DFS和BFS并不是非常复杂的概念,但我发现很多在线示例都是错误的,特别是在检查周期时。例如,大多数伪代码和代码示例要么将所有节点存储在一个数组中,要么使用第二个数组来跟踪被访问的数据,要么将所有节点存储在一个独特的可迭代容器中并放置一个“访问过的”数据。节点本身内的变量,然后初始化“访问过的”#39;通过迭代唯一容器来变量。
这些都是错误的情况。
如果你刚刚传递了一个图表(也许是一个起始节点),并且没有唯一的可迭代容器来设置一些“访问过的”#39;您不知道树中有多少个唯一节点,确定您是否已经访问过某个节点的好方法是什么?
我可以想到两个:如果你保证节点中的值是唯一的,你可以散列值;否则我想你可以散列每个节点的地址。哈希将映射到访问过的'值。
还有其他想法吗?