Q
https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
Given inorder and postorder traversal of a tree, construct the binary tree.
A
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize) {
if (!inorderSize || !postorderSize || inorderSize != postorderSize) {
return NULL;
}
struct TreeNode *p = (struct TreeNode *)malloc(sizeof(struct TreeNode));
p->val = postorder[postorderSize-1];
int i = 0;
while(inorder[i] != postorder[postorderSize-1])
++i;
p->left = buildTree(inorder, i, postorder, i);
p->right = buildTree(inorder+i+1, inorderSize-i-1, postorder+i, postorderSize-i-1);
return p;
}