#include<vector>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
//先序遍历+中序遍历构建二叉树
TreeNode* reConstructBinaryTree(TreeNode* node, vector<int> pre, vector<int> vin)
{
if (pre.size() < 1)return nullptr;
else
{
int c = pre[0];
vector<int> vin2;
vector<int> vin3;
vector<int> pre2;
vector<int> pre3;
bool ispre = false;
int j = 1;
for (int i = 0; i < vin.size(); i++)
{
if (vin[i] == c) { ispre = true; continue; }
if (ispre == false) { vin2.push_back(vin[i]); pre2.push_back(pre[j]); j++; }
if (ispre == true) { vin3.push_back(vin[i]); pre3.push_back(pre[j]); j++; }
}
node = new TreeNode(pre[0]);
node->left = reConstructBinaryTree(node->left, pre2, vin2);
node->right = reConstructBinaryTree(node->right, pre3, vin3);
return node;
}
}