题目:重建二叉树
题目描述:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
python实现思路:
二叉树的遍历方式很多,可以分为广度优先遍历和深度优先遍历,深度优先遍历有前序遍历,中序遍历和后序遍历,这里的前、中、后指的是根节点的顺序,也常说成先根遍历,中根遍历和后根遍历。
1.先(根)序遍历:
若二叉树非空,则依次执行如下操作:
⑴ 访问根结点;
⑵ 遍历左子树;
⑶ 遍历右子树。
2.中(根)序遍历:
若二叉树非空,则依次执行如下操作:
⑴遍历左子树;
⑵访问根结点;
⑶遍历右子树。
3.后(根)序遍历:
若二叉树非空,则依次执行如下操作:
⑴遍历左子树;
⑵遍历右子树;
⑶访问根结点。
其中有了前序遍历和中序遍历的结果才可以唯一确定一个二叉树,或者有了中序遍历和后序遍历的结果可以唯一确定一个二叉树。
本题中要求利用前序遍历和中序遍历的结果重建二叉树。
举例:
前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}
[1 ,2,4,7