前序:中左右
后序:左右中
中序:左中右
例题
假如我们有一棵二叉树,前序遍历是ABDEHCFE,中序遍历是DBHEAFEC,问后序遍历是?
前: A B D E H C F E
中: D B H E A F E C
前序遍历是中左右:所以前序遍历的第一个节点一定是根节点,A是根节点
中序遍历是左中右:我们又知道A是根节点,所以中序在A点分成两半,前半边(D B H E)是左子树,后半边(F E C)是右子树
根据上面的方法,遍历前序遍历的节点,在中序遍历中的左右子树中找到对应的节点,左边的全归为该节点的左子树,右边的全是右子树,左右都没有则是叶子节点。
如第二个节点是B,所以左子树的(D B H E)中(D)是B的左子树,(H E)是B的右子树。
继续下去就可以得到
根据左右中
可以得到后序遍历为,D H E B E F C A
总结
遍历前序遍历节点,根据前序遍历节点在中序遍历里的位置,左边归为左子树,右边归为右子树。