使用递归来做
class Solution {
public:
vector in_order, post_order;
unordered_map in_mp;
int idx;
TreeNode* buildTree(vector& inorder, vector& postorder) {
in_order = inorder;
post_order = postorder;
int n = inorder.size();
idx = n - 1;
for (int i = 0; i < n; i++) {
in_mp[inorder[i]] = i;
}
return getNode(0, n-1);
}
TreeNode* getNode(int l, int r) {
cout << "l is" << l << "r is" << r << endl;
if (l > r) return NULL;
int m = in_mp[post_order[idx]];
TreeNode* root = new TreeNode(post_order[idx]);
idx--;
root->right = getNode(m+1, r);
root->left = getNode(l, m-1);
return root;
}
};



