剣指offer二叉木再建C++牛客網
剣指offer二叉木再建C++牛客網
/** Definition for binary tree struct TreeNode { };/class Solution { public: TreeNode reConstructBinaryTree(vector pre,vector vin) { if (pre.empty()||vin.empty()) return nullptr; TreeNode *root =new TreeNode(pre[0]); int leftNum=0; for (int i=0;i {
if (vin[i]==pre[0])
{
leftNum=i;
break;
}
}
vector preleft,preright,vinleft,vinright;
for (int i=0; i {
preleft.push_back(pre[i+1]);
vinleft.push_back(vin[i]);
}
for (int i=leftNum+1; i {
preright.push_back(pre[i]);
vinright.push_back(vin[i]);
}
/**
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
if (vin[i]==pre[0])
{
leftNum=i;
break;
}
}
vector preleft,preright,vinleft,vinright;
for (int i=0; i
preleft.push_back(pre[i+1]);
vinleft.push_back(vin[i]);
}
for (int i=leftNum+1; i
preright.push_back(pre[i]);
vinright.push_back(vin[i]);
}
root->left=reConstructBinaryTree(preleft,vinleft);
root->right=reConstructBinaryTree(preright,vinright);
return root;
} };