您的位置:首页 > 其它

【Leetcode】Construct binary tree from inorder and postorder traversal

2015-09-03 03:10 519 查看
【题目】

Given inorder and postorder traversal of a tree, construct the binary tree.
Note:

You may assume that duplicates do not exist in the tree.

【思路】

pretty similar with that of 

【代码】

public TreeNode buildTree(int[] inorder, int[] postorder) {
if(inorder.length == 0 || inorder.length != postorder.length) return null;
return buildTree(inorder,postorder,0,inorder.length-1,0,postorder.length-1);
}

public TreeNode buildTree(int[] inorder, int[]postorder, int ilow, int ihigh, int plow, int phigh) {
TreeNode root = new TreeNode(postorder[phigh]);
int i=-1;
for(i = ilow; i <= ihigh; i++) {
if(root.val == inorder[i]) {
break;
}
}
if(i != ilow) root.left = buildTree(inorder, postorder, ilow, i-1, plow,plow+i-ilow-1);
if(i != ihigh) root.right = buildTree(inorder,postorder, i+1, ihigh, plow+i-ilow, phigh-1);
return root;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode