重建二叉树
public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if(pre==null||in==null||pre.length!=in.length||pre.length<1) return null; return helper(pre,0,pre.length-1,in,0,in.length-1); } private TreeNode helper(int[] pre, int ps, int pe, int[] in, int is, int ie){ if(ps>pe || is>ie) return null; int val = pre[ps]; int index=is; while(index<=ie&&in[index]!=val) index++; if(index>ie) throw new RuntimeException("invalid"+ie); TreeNode root = new TreeNode(val); root.left = helper(pre,ps+1,ps+index-is,in,is,index-1); root.right = helper(pre,ps+index-is+1,pe,in,index+1,ie); return root; }
posted on 2019-02-25 19:10 www_practice 阅读(123) 评论(0) 编辑 收藏 举报