/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
if(pre.size()==0)
return NULL;
vector<int> lpre,rpre,lin,rin;
TreeNode* p=new TreeNode(pre[0]);
int middle=0;
int len=in.size();
for(int i=0;i<len;i++){
if (in[i]==pre[0])
middle=i;
}
for(int i=0;i<middle;i++)
{
lin.push_back(in[i]);
lpre.push_back(pre[i+1]);
}
for(int i=middle+1;i<len;i++)
{
rin.push_back(in[i]);
rpre.push_back(pre[i]);
}
p->left=reConstructBinaryTree(lpre,lin);
p->right=reConstructBinaryTree(rpre,rin);
return p;
}
};
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
if(pre.size()==0)
return NULL;
vector<int> lpre,rpre,lin,rin;
TreeNode* p=new TreeNode(pre[0]);
int middle=0;
int len=in.size();
for(int i=0;i<len;i++){
if (in[i]==pre[0])
middle=i;
}
for(int i=0;i<middle;i++)
{
lin.push_back(in[i]);
lpre.push_back(pre[i+1]);
}
for(int i=middle+1;i<len;i++)
{
rin.push_back(in[i]);
rpre.push_back(pre[i]);
}
p->left=reConstructBinaryTree(lpre,lin);
p->right=reConstructBinaryTree(rpre,rin);
return p;
}
};