1.前序遍历第一个一定是根节点
2.后序遍历最后一个一定是根节点
3.中序遍历中根节点左侧的一定都是根结点的左子树,右侧的一定都是根节点的右子树。
所以我们可以通过
前序和中序或者
中序和后序遍历的结果来确定树的结构。比如对于以下
前序结果:ABDGHCEIF
中序遍历结果:GDHBAEICF
前序的第一个一定是该树的根节点,对于中序,根节点左侧的一定是该树的左子树,跟序的右节点一定是该树的右子树
,所以到此,我们知道了 左子树:GDHB ;根:A;右子树:EICF
再看左子树,前序遍历去除第一个根节点后剩下BDGHCEIF,第一个节点是左子树的根节点,即B为GDHB的根节点,从
中序结果GDHB我们可以知道,GDH值左子树根节点B的左子树,B的右子树为空。
前序再去掉B,剩下DGHCEIF,中序左子树还剩GDH未确定,由前序知D是剩下的左子树的根节点,由中序值,根节点左侧的G为D的左子树,
根节点D右侧的为根节点的右子树。到此我们确定了该树的所有左子树结构。
再看A的右子树部分,由前序可知C为右子树的根节点,EI为C的左子树部分,F为C的右子节点。
再有前序知E为左子树的根节点,看中序可知I为E的右子节点,到此整棵树确定完毕。