leetcode:Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:剑网三有挂机软件么 编辑:程序博客网 时间:2024/06/13 08:49

简单的递归题目,给出中序遍历和前序遍历,重建该树

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    static HashMap<Integer, Integer> mp;    public TreeNode buildTree(int[] preorder, int[] inorder){        mp = new HashMap<>();        for(int i = 0; i < inorder.length; ++i){            mp.put(inorder[i], i);        }        return buildTree(inorder, 0, inorder.length , preorder, 0, preorder.length );    }    public TreeNode buildTree(int[] inOrder, int inStart, int inEnd,                                        int[] preOrder, int preStart, int preEnd){        TreeNode node = null;        if(inStart < inEnd){            node = new TreeNode(preOrder[preStart]);            int site = mp.get(preOrder[preStart]);            node.left = buildTree(inOrder, inStart, site, preOrder, preStart + 1, preStart + site - inStart);            node.right = buildTree(inOrder, site + 1, inEnd, preOrder, preStart + site - inStart + 1, preEnd);        }        return node;    }}


0 0