题目
题解
class Solution {
public:
TreeNode *build(vector<int> &pre,int prel,int prer,vector<int> &post,int postl,int postr){
if(prer < prel || postl > postr) return nullptr;
int index = postl;
TreeNode *root = new TreeNode(post[postr]);
if(prer == prel || postl == postr) return root;
while(index < postr){
if(post[index] == pre[prel+1]) break;
++index;
}
root->left = build(pre,prel+1,index - postl + prel + 1,post,postl,index);
root->right = build(pre,prel + index - postl + 2,prer,post,index + 1,postr-1);
return root;
}
TreeNode* constructFromPrePost(vector<int>& pre, vector<int>& post) {
return build(pre,0,pre.size()-1,post,0,post.size()-1);
}
};