2014-12-30 132 views
1

比方说,我有身高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

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

取而代之的只是左右切换,左右切换,然后可以遍历每个右叶,并且只有在不能再遍历右叶时才能遍历左叶。

+0

当然,作为DFS的算法替换,我的问题是如果你能从遍历本身得到它的话。那有意义吗? –

+0

恐怕我不太明白这个问题 – Dbz

+0

对不起,如果我交给你一个图的三种常见的DFS遍历(in,post,和pre-order),有没有什么方法可以获得上面建议的“反向”DFS列表?当然,获取正常的DFS节点列表只是预订遍历。 –