c++ simple recursion
\nclass Solution {\npublic:\n    \n    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {\n        return bld(inorder,postorder,0,inorder.size(
```\nclass Solution {\npublic:\n    \n    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {\n        return bld(inorder,postorder,0,inorder.size()-1,0,postorder.size()-1);\n    }\n    \n    TreeNode* bld(vector<int>&inorder, vector<int>&postorder, int istart, int iend,\n                  int pstart,int pend){\n        if(istart > iend || pstart > pend)\n            return NULL;\n        int val = postorder[pend];\n        \n        int i = istart;\n        while(inorder[i] != val) i++;\n\n        TreeNode* root = new TreeNode(val);\n        root->left = bld(inorder, postorder, istart, i-1, pstart, pstart+i-istart-1);\n        root->right = bld(inorder, postorder, i+1, iend, pend-(iend-i), pend-1);\n        return root;\n    }\n};\n```
['Recursion', 'C', 'C++']