Construct Binary Tree from Inorder and Postorder Traversal
给一个in order和 post order遍历的数组, 建立一个二叉树. 这个题吧….不看答案当场写肯定挂..
public class Solution {
private int pLength;
public TreeNode buildTree(int[] inorder, int[] postorder) {
int iLength = inorder.length ;
pLength = postorder.length - 1;
return helper(inorder, postorder, 0, iLength-1);
}
public TreeNode helper(int[] inorder, int[] postorder, int inStart, int inEnd){
if (inStart > inEnd || pLength < 0) return null;
int last = postorder[pLength--];
TreeNode root = new TreeNode(last);
for (int i = inStart; i<= inEnd; i++){
if (last == inorder[i]){
root.right = helper(inorder, postorder, i+1, inEnd);
root.left = helper(inorder, postorder, inStart, i-1);
break;
}
}
return root;
}
}