非递归的遍历方式

现在有一颗二叉树

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

ABC       BDE      D       E      CF     F

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

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

BAC     DBE      D      E      CF     F

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

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

你可能感兴趣的:(非递归的遍历方式)