classSolution{public:TreeNode*buildTree(vector<int>& inorder, vector<int>& postorder){unordered_map<int,int> d;int n = inorder.size();for(int i =0; i < n;++i){d[inorder[i]]= i;}function<TreeNode*(int,int,int)> dfs =[&](int i,int j,int n)-> TreeNode*{if(n <=0){returnnullptr;}int v = postorder[j + n -1];int k = d[v];auto l =dfs(i, j, k - i);auto r =dfs(k +1, j + k - i, n - k + i -1);returnnewTreeNode(v, l, r);};returndfs(0,0, n);}};