Easy C++ solution 99% faster || commented
\n/**\n * Definition for a binary tree node.\n * struct TreeNode {\n *     int val;\n *     TreeNode *left;\n *     TreeNode *right;\n *     TreeNode() : val(0)
```\n/**\n * Definition for a binary tree node.\n * struct TreeNode {\n *     int val;\n *     TreeNode *left;\n *     TreeNode *right;\n *     TreeNode() : val(0), left(nullptr), right(nullptr) {}\n *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n * };\n */\nclass Solution {\npublic:\n    int postInd;\n    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {\n        postInd=postorder.size()-1;\n        \n        //map all the elements of inorder to their index\n        unordered_map<int,int> mp;\n        for(int i=0;i<inorder.size();i++)\n            mp[inorder[i]]=i;\n        \n        return helper(0,inorder.size()-1,mp,postorder);\n    }\n    TreeNode* helper(int start,int end,unordered_map<int,int>& mp,vector<int>& postorder)\n    {\n        if(start>end)\n            return NULL;\n        int curr=postorder[postInd];\n        TreeNode* node=new TreeNode(curr);\n        postInd--;\n        node->right=helper(mp[curr]+1,end,mp,postorder);\n        node->left=helper(start,mp[curr]-1,mp,postorder);\n        return node;\n    }\n};\n```\n**Upvote if this helps you :)**
['C']