问答题 已知先序遍历和中序遍历,如何求后序遍历
【正确答案】
【答案解析】一般数据结构都有遍历操作,根据需求的不同,二叉树一般有以下几种遍历方式:先序遍历、中序遍历、后序遍历和层序遍历。
(1)先序遍历
如果二叉树为空,遍历结束。否则,第一步,访问根结点;第二步,先序遍历根结点的左子树;第三步,先序遍历根结点的右子树。
(2)中序遍历
如果二叉树为空,遍历结束。否则,第一步,中序遍历根结点的左子树;第二步,访问根结点;第三步,中序遍历根结点的右子树。
(3)后序遍历
如果二叉树为空,遍历结束。否则,第一步,后序遍历根结点的左子树;第二步,后序遍历根结点的右子树;第三步,访问根结点。
(4)层次遍历
从二叉树的第一层(根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。
如图所示的二叉树的先序遍历产生的序列是ABDHIEJCFG,中序遍历产生的序列是HDIBJEAFCG,后序遍历产生的序列是HIDJEBFGCA,层次遍历产生的序列是ABCDEFGHIJ。

二叉树(一)

如果已知先序序列为ABDECF,中序序列为DBEAFC,如何求解后序序列呢?首先,由于先序遍历树的规则为根左右,因此可以得出先序遍历序列的第一个元素必为树的根结点,则A就为根结点。再看中序遍历为左根右,再根据根结点A,可知左子树包含元素为DBE,右子树包含元素为FC。其次,递归求解左子树(左子树的先序为BDE,中序为DBE),递归求解右子树(即右子树的先序为CF,中序为FC)。如此递归到没有左右子树为止,所以树结构如图所示。