题目描述(剑指offer第七题)
C++代码
class Solution {
public:
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
if(pre.size()<1)
return nullptr;
TreeNode* root = new TreeNode(pre[0]);
if(pre.size()==1)
return root;
else{
int mid;
for(int i=0;i<vin.size();i++)
{
if(vin[i]==root->val)
{
mid=i;
break;
}
}
if(mid>0)
{
vector<int> leftpre(pre.begin()+1,pre.begin()+mid+1);
vector<int> leftvin(vin.begin(),vin.begin()+mid);
root->left=reConstructBinaryTree(leftpre,leftvin);
}
if(mid<vin.size()-1)
{
vector<int> rightpre(pre.begin()+mid+1,pre.end());
vector<int> rightvin(vin.begin()+mid+1,vin.end());
root->right=reConstructBinaryTree(rightpre,rightvin);
}
}
return root;
}
};