反转深度优先搜索或预订遍历

时间:2014-12-30 02:22:55

标签: graph traversal depth-first-search tree-traversal

假设我有一个高度为2的完整二进制图,如下所示:

         0
     1        2 
  3     4  5     6

其中有0到1和0到2,1到3和1到4,2到5和2到6的边。

我可以通过执行预先遍历来获得深度优先搜索顺序(0,1,3,4,2,5,6)的节点。

是否有一些相当简单的方法可以通过算法从预订遍历,后序遍历或有序遍历中获得反向,我的意思是在每个级别上你先行,然后离开,这样你最终得到(0,2,6,5,1,4,3)?

我已经看了很多,但没有发现任何适用的东西。

N.B。如果你想知道为什么我想要它我有一个基于DFS的搜索算法,因此找到比右边的节点更快的图表左边的节点。我正在考虑在正常的从左到右的dfs上运行并行处理,而另一个在从右到左的逆转。

1 个答案:

答案 0 :(得分:0)

在DFS中你调用左叶上的递归函数,并继续这样做,直到你不能,然后一个级别你在右边的叶子上调用它,然后继续调用左边的叶子一直向下

相反,只需左右切换左边的每个左边,然后你可以遍历每一个右边的叶子,只有当你不能再穿过右边的叶子时,才会遍历左边的叶子。