SHORT & SWEET || EASY TO UNDERSTAND || C++ || RECURSION
\nclass Solution {\npublic:\n    int x ;\n    TreeNode* solve(vector<int> &a,vector<int> &b,int s,int e){\n        if(s>e)return NULL;\n        TreeNode* node =
```\nclass Solution {\npublic:\n    int x ;\n    TreeNode* solve(vector<int> &a,vector<int> &b,int s,int e){\n        if(s>e)return NULL;\n        TreeNode* node = new TreeNode(b[x++]);\n        int i;\n        for(i = s; i<=e; i++){\n            if(node->val == a[i]){\n                break;\n            }\n        }\n        node->right = solve(a,b,i+1,e);\n        node->left = solve(a,b,s,i-1);\n        return node;\n    }\n    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {\n        reverse(postorder.begin(),postorder.end());\n        x = 0;\n        return solve(inorder,postorder,0,inorder.size()-1);\n        \n    }\n};\n```
['Tree', 'Recursion', 'C', 'Binary Tree', 'C++']