假设我有一个高度为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上运行并行处理,而另一个在从右到左的逆转。
答案 0 :(得分:0)
在DFS中你调用左叶上的递归函数,并继续这样做,直到你不能,然后一个级别你在右边的叶子上调用它,然后继续调用左边的叶子一直向下
相反,只需左右切换左边的每个左边,然后你可以遍历每一个右边的叶子,只有当你不能再穿过右边的叶子时,才会遍历左边的叶子。