非递归的遍历方式

2017-10-20  本文已影响0人  Two口吃成大胖子

现在有一颗二叉树

我们将每个节点看做一个根节点,并对其进行前序遍历,可以得到

ABC       BDE      D       E      CF     F

可以发现,每个节点都出现了两次,可以认为是相邻节点,我们按照顺序进行组合,比如ABC和BDE,因为DE是以B为根节点遍历出来的,所以优先和B组合,就可以得到ABDEC,将只有一个节点的排除,那么我们得到ABDECF这就是前序遍历。

如果我们对其进行中序遍历,可以得到

BAC     DBE      D      E      CF     F

同样的组合,可以得到DBEACF。

其实这个规律,是参考局部的排序能够保证整体的排序方式,所以我们需要对每个节点进行相应的遍历操作(进行入栈),当第二次遇到该节点,就可以入队列了。

上一篇下一篇

猜你喜欢

热点阅读