根据前序遍历和中序遍历写出后续遍历
例子:
已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF
解题思路:
回看一下式1和式2。可以看出前序遍历的第一个元素就是这个子树的根节点,然后就可以结合中序遍历划分左右子树,进而对左右子树的前序遍历和中序遍历递归求解子树树根,直至子树为空。
例题解释:
有前序序列可以知道根节点为A,由中序序列可以知道A的左子树中序遍历为DBGE,由前序序列可以知道A的左子树前序序列为BDEG。接下来可以得到A右子树前序序列为CFH,中序遍历为CHF。接下来递归求解即可。
已知一棵二叉树的前根序序列和中根序序列,构造该二叉树的过程如下:
- 根据前根序序列的第一个元素建立根结点;
- 在中根序序列中找到该元素,确定根结点的左右子树的中根序序列;
- 在前根序序列中确定左右子树的前根序序列;
- 由左子树的前根序序列和中根序序列建立左子树;
- 由右子树的前根序序列和中根序序列建立右子树。
根据后序遍历和中序遍历求前序遍历
例题:
已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历是()
解题思路:
回看一下式2和式3。后序遍历的根节点在最后一个元素,因此可以根据根节点结合中序遍历,将找出根节点的左子树、右子树。进而递归需找子树根节点,直至子树为空。
例题解释:
根据后序遍历可知根节点为c,结合中序遍历c左子树中序遍历为deba,前序遍历为dabe,右子树为空。接下来对左子树递归求解即可。
已知一棵二叉树的后根序序列和中根序序列,构造该二叉树的过程如下:
- 根据后根序序列的最后一个元素建立根结点;
- 在中根序序列中找到该元素,确定根结点的左右子树的中根序序列;
- 在后根序序列中确定左右子树的后根序序列;
- 由左子树的后根序序列和中根序序列建立左子树;
- 由右子树的后根序序列和中根序序列建立右子树。
根据前序遍历和后序遍历求中序遍历
这种方式是无法确切还原出树的结构的。
例子:
二叉树前序遍历为ABDEGCFH,后序序列为DGEBHFCA
分析:
可以确定第一个根节点是A,A第一个子树根节点是B,根节点为B的子树后序遍历为DGEB,前序遍历为BDEG,A第二个子树根节点为C,他的后序遍历为HFC,前序遍历为CFH,然后一次递归。简单起见,我们只看A第二个子树,即右子树C。C的第一个根节点F,子树F的后序遍历HF,前序遍历FH,C没有第二个子树,这时不管F为左子树还是右子树都是满足要求的。同理F的子树H。
总结,在由两种遍历方式求树结构的时候,关键是先找到根节点,然后对左右子树递归求解。
因此这题,由于后序遍历中c的左边就是靠近a了,所以a是没有其另外的一个孩子节点。
参考链接:https://blog.csdn.net/weixin_41856078/article/details/79725852