class Solution {
public:
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
int val;
if (pre.size() > 0)
val = pre[0]; // for root node
else
return NULL;
TreeNode *root = new TreeNode(val);
int count1 = 0;
for (int i = 0; i < vin.size(); i++)
{
if (vin[i] == val)
{
count1 = i;
break;
}
}
vector<int> newpreL;
vector<int> newpreR;
vector<int> newvinL;
vector<int> newvinR;
//inintialize vin vector
for (int i = 0; i < count1; i++)
newvinL.push_back(vin[i]);
for (int j = count1 + 1; j < vin.size(); j++)
newvinR.push_back(vin[j]);
//initialize pre vector
for (int i = 1; i <= count1; i++)
newpreL.push_back(pre[i]);
for (int j = count1 + 1; j < pre.size(); j++)
newpreR.push_back(pre[j]);
root->left = reConstructBinaryTree(newpreL, newvinL);
root->right = reConstructBinaryTree(newpreR, newvinR);
return root;
}
};
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树
最新推荐文章于 2020-09-14 08:38:44 发布