一、题目
二、代码
class Solution
{
Map<Integer,Integer> map = new HashMap<>();
public TreeNode build(int[] preorder,int[] inorder, int preorder_left, int preorder_right, int inorder_left, int inorder_right)
{
if(preorder_left >preorder_right || inorder_left>inorder_right) return null;
TreeNode root = new TreeNode(preorder[preorder_left]);
int root_index = map.get(root.val);
int size = root_index - inorder_left;
root.left = build(preorder,inorder,preorder_left+1,preorder_left+size,inorder_left,root_index-1);
root.right = build(preorder,inorder,preorder_left+size+1,preorder_right ,root_index+1, inorder_right);
return root;
}
public TreeNode buildTree(int[] preorder, int[] inorder)
{
int i;
int length = inorder.length;
for(i=0;i<length;i++)
{
map.put(inorder[i],i);
}
return build(preorder,inorder,0,length-1,0,length-1);
}
}
三、运行结果