通类似 Construct Binary Tree from Preorder and Inorder Traversal(
ref
http://www.cnblogs.com/springfor/p/3884035.html
public class Solution {
public TreeNode buildTree(int[] inorder, int[] postorder) {
if(inorder==null || postorder==null) return null;
return findRoot(inorder, 0, inorder.length-1, postorder, 0, postorder.length-1);
}
public TreeNode findRoot(int[] in, int istart, int iend, int[] po, int pstart, int pend){
if(iend<istart || pend< pstart) return null;
TreeNode root = new TreeNode(po[pend]);
int rootInd = istart;
while(in[rootInd]!=po[pend]){
rootInd++;
}
int len = rootInd-istart;
root.left = findRoot(in, istart, istart+len-1, po, pstart, pstart+len-1);
root.right = findRoot(in, istart+len+1, iend, po, pstart+len,pend-1);
return root;
}
}