//iterative
public TreeNode buildTree(int[] inorder, int[] postorder) {
// Start typing your Java solution below
// DO NOT write main() function
if(inorder.length == 0 || inorder.length != postorder.length) return null;
return buildTree(inorder, postorder, 0, inorder.length - 1, 0, inorder.length - 1);
}
public TreeNode buildTree(int[] inorder, int[] postorder, int instart, int inend, int poststart, int postend) {
if(poststart > postend || instart > inend) return null;
if(poststart == postend) return new TreeNode(postorder[poststart]);
TreeNode root = new TreeNode(postorder[postend]);
int index = instart;
while(index <= inend && inorder[index] != root.val) index++;
root.left = buildTree(inorder, postorder, instart, index - 1, poststart, poststart + index - instart - 1);
root.right = buildTree(inorder, postorder, index + 1, inend, poststart + index - instart, postend - 1);
return root;
}
Construct Binary Tree from Inorder and Postorder Traversal
最新推荐文章于 2021-02-03 15:56:42 发布
