1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
* Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class { public TreeNode buildTree(int[] inorder, int[] postorder) { if(inorder==null || postorder==null) return null; HashMap<Integer,Integer> map=new HashMap<Integer,Integer>(); for(int i=0;i<inorder.length;i++) map.put(inorder[i],i); return helper(inorder,0,inorder.length-1,postorder,0,postorder.length-1,map); }
public TreeNode helper(int[] inorder,int inL,int inR,int[] postorder,int postL,int postR,HashMap<Integer,Integer> map) { if(inL>inR || postL>postR) return null; TreeNode root=new TreeNode(postorder[postR]); int val=root.val; int index=map.get(val); root.left=helper(inorder,inL,index-1,postorder,postL,postL+index-inL-1,map); root.right=helper(inorder,index+1,inR,postorder,postR-inR+index,postR-1,map); return root; } }
|
近期评论