数据结构中已知前序序列和中序序列,怎么得出后序序列

如题所述

一般是先还原二叉树,再后序遍历就可以得到后序序列了,还原过程如下:
首先在前序序列第一个就是根,拿到中序序列中,就可以将中序序列分解成3个部分:左子树的中序、根、右子树的中序
再分别将左子树的中序和右子树的中序回到前序序列,这些子树的前序序列里面,子树的根依然排在第一位,再次回到该子树的中序进行切割,直到所有的子树都只有一个结点为止
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-02
标准的答案!首先要明确前序,中序和后序的遍历顺序:
前序:父节点,左子节点,右子节点;
中序:左子节点,父节点,右子节点;
后序:左子节点,右子结点,父节点;
明确之后,首先根据前序遍历,确定整个二叉树的根节点(前序的第一个节点);再通过中序遍历,可以直接根据根节点将整个二叉树分为左右两颗子树。这时再逐步根据前序和中序顺序,不难画出整个二叉树。进而可以写出后序遍历序列了。
例:已知某二叉树先序遍历序列是:ABCDEFH,中序遍历序列是:BDCEAHF,写出后序遍历序列。
由前序可知,该树根节点为A;
由中序及根节点可知,B,D,C,E在根节点的左子树上H,F在根节点的右子树上;
再逐步分析各子树,可得该树为:
A
╱╲
BF
╲╱
CH
╱╲
DE
后序为:DECBHFA
相似回答