在遍历顺序中,第一顺序是左、右,中间顺序是左、中、右。因此该方法是通过一阶(根节点必须存在且必须是子树遍历的第一个节点)找到根节点,然后根据相应根节点在中间阶的位置来区分左右子树。左子树是它的左子树,右子树是它的右子树。
例如,如果a是根,则在中间顺序中,左子树是dfegb,右子树是cikjh。然后利用递归的思想对左子树进行分析。dfegb在pre-order中以b开头,因此b是根节点。从中间的顺序,我们可以看到这棵树只有左子树dfeg;d是根,只有右子树feg;e是根,左叶是f,右叶是g。
然后看cikjh。从前序我们知道c是根,从中序我们知道只有右子树ikjh。从前序h作为根,从中间序我们可以看到只有左子树ikj。这棵树的根是我,只有右边的子树。j是根,k是它的左叶。
二叉树可以由两次遍历的顺序唯一确定。例如,给定一个二叉树,前序序列是abdecfg,中序序列是dbeafcg。二叉树的根可以由前序序列确定为a,因为前序遍历顺序是从根到左子树再到右子树。从中序序列可以看出dbe在a的左子树中,fcg在a的右子树中,因为b在前序序列中跟随a,所以b必须是a的左子树的根。在前序序列中,a的左子树是dbe。前序序列的遍历顺序为:左子树、父子树和右子树。我们可以看到d是b的左子树,e是b的右子树。我们也可以分析根a的右子树。前序序列中的abde已经遍历了根和左子树,所以剩余的cfg就是右子树遍历的序列。可以看出,c是右子树的根,f是c的左子树,g是c的右子树,因此,二叉树的序列遍历顺序应该是abcdefg。