思路:由二叉树的层序遍历的第一个元素seq[0],我们可以知道它是根节点,所以我们在中序遍历中vector<int>inorder查找层序遍历序列的第一个位置 ,可以将中序遍历序列分成左右子树。然后我们构建左右子树的层序遍历序列。如下代 vector<int>left;
vector<int>right;左右子树的层次遍历。
#include<iostream>
#include<vector>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left,*right;
TreeNode(int v):val(v),left(nullptr),right(nullptr){}
};
TreeNode* createTree(vector<int>inorder,vector<int>seq,int begin,int end)
{
if(seq.size()<=0) return nullptr;
TreeNode *root=new TreeNode(seq[0]);
vector<int>left;
vector<int>right;
int k;
for(k=begin;k<=end;++k)
if(inorder[k]==seq[0])
break;
bool isleft;
for(int i=1;i<seq.size();++i)
{
isleft=false;
for(int j=begin;j