重建二叉树
struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
if(pre.empty()||in.empty()||pre.size()!=in.size())
return NULL;
<strong>TreeNode *root = new TreeNode(pre[0]);//需要申请新的内存空间
int i;
for(i=0;pre[0]!=in[i];i++);
int in_root = i;
vector<int> left_pre;
vector<int> left_in;
vector<int> right_pre;
vector<int> right_in;
int j=1;
for(i=0;i<in_root;){
left_pre.push_back(pre[j++]);
left_in.push_back(in[i++]);
}
i++;
for(;i<in.size();){
right_pre.push_back(pre[j++]);
right_in.push_back(in[i++]);
}
root->left = reConstructBinaryTree(left_pre,left_in);
root->right = reConstructBinaryTree(right_pre,right_in);
return root;
}