package com.interview.tree;
/**
* Given inorder and postorder traversal of a tree, construct the binary tree.
*
* https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
*/
public class ContructTreeFromInorderPostOrder {
public Node buildTree(int[] inorder, int[] postorder) {
return buildTree(inorder, postorder, 0, inorder.length - 1, postorder.length - 1);
}
public Node buildTree(int[] inorder, int[] postorder, int start, int end, int index) {
if (start > end) {
return null;
}
int i;
for (i = start; i <= end; i++) {
if (postorder[index] == inorder[i]) {
break;
}
}
Node tn = Node.newNode(postorder[index]);
tn.left = buildTree(inorder, postorder, start, i - 1, index - (end - i + 1));
tn.right = buildTree(inorder, postorder, i + 1, end, index - 1);
return tn;
}
}