题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如:给出
前序 preorder[ ] = { 3,9,20,15,7};
中序 inorder[ ] = {9,3,15,20,7};
返回
3
↙↘
9 20
↙↘
15 7
思路:由前序序列可知root的值,然后在中序中找到root,则root的左边是左子树集合,右边是右子树集合,依次这样下去,适合采用递归的写法。
题目中又说了前序遍历和中序遍历的结果中都不含重复的数字,所以在java中适合用Map集合框架中的HashMAP。
代码:
* Definition for a binary tree node.
* public class Tree {
* int val;
* Tree left;
* Tree right;
* Tree(int x) {
val = x; }
* }
*/
class solution{
public Tree buildtree(int preorder