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