TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
return constructBinaryTree(pre,vin);
}
TreeNode* constructBinaryTree(const vector<int> &pre,const vector<int> &vin){
if(pre.size() ==0 || vin.size()==0){
return NULL;
}
vector<int> left_pre,right_pre,left_vin,right_vin;
int ii;
for(ii = 0;ii< vin.size();++ii){
if(pre[0] == vin[ii]){
break;
}
left_vin.push_back(vin[ii]);
}
int jj;
for(jj = 1;jj<=ii;jj++){
left_pre.push_back(pre[jj]);
}
for(;jj<pre.size();jj++){
right_pre.push_back(pre[jj]);
}
for(ii++;ii<vin.size();++ii){
right_vin.push_back(vin[ii]);
}
TreeNode *root = new TreeNode(pre[0]);
root->left = constructBinaryTree(left_pre,left_vin);
root->right = constructBinaryTree(right_pre,right_vin);
return root;
}
【编程题】根据前序中序重建二叉树
最新推荐文章于 2021-07-31 17:48:26 发布