HashMap的用法:
map.put(key,value)
map.get(key)
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
if(preorder==null || preorder.length==0)
return null;
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
int length=preorder.length;
for(int i=0;i<length;i++){
map.put(inorder[i],i);
}
TreeNode root=build(preorder,0,length-1,inorder,0,length-1,map);
return root;
}
public TreeNode build(int[] preorder,int pa,int pb, int[] inorder,int ia,int ib,Map<Integer,Integer> map){
if(pa>pb) return null;
int rootval=preorder[pa];
TreeNode root=new TreeNode(rootval);
if(pa==pb) return root;
else{
int rootindex=map.get(rootval);
int countl=rootindex-ia;
int countr=ib-rootindex;
TreeNode l=build(preorder,pa+1,pa+countl,inorder,ia,rootindex-1,map);
TreeNode r=build(preorder,pb-countr+1,pb,inorder,rootindex+1,ib,map);
root.left=l;
root.right=r;
return root;
}
}
}