您的位置:首页 > 其它

106 Construct Binary Tree from Inorder and Postorder Traversal

2015-05-19 09:07 281 查看
public class Solution {
public TreeNode buildTree(int[] inorder, int[] postorder) {
if (inorder == null || postorder == null || inorder.length != postorder.length || inorder.length == 0) {
return null;
}
int length = inorder.length;
int rootVal = postorder[length - 1];
int mid = 0;
for (int i = 0; i < length; i++) {
if (inorder[i] == rootVal) {
mid = i;
break;
}
}

int[] leftIn = Arrays.copyOfRange(inorder, 0, mid);
int[] rightIn = Arrays.copyOfRange(inorder, mid + 1, length);
int[] leftPost = Arrays.copyOfRange(postorder, 0, mid);
int[] rightPost = Arrays.copyOfRange(postorder, mid, length - 1);
TreeNode root = new TreeNode(rootVal);
root.left = buildTree(leftIn, leftPost);
root.right = buildTree(rightIn, rightPost);
return root;
}
}


知道copyOfRange(int[] array, int start, int end)方法,start和end要写准。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: