我在写通过二叉树前序和中序遍历的结果重构二叉树,但是TreeNode结构体一直报错,不知道哪里出了问题
这是编译器提示的错误信息
这是代码
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <unordered_map>
#include <stdlib.h>
using namespace std;
TreeNode *reConstructBinaryTree(vector<int> pre,vector<int> vin);
TreeNode *buildtreehelper(unordered_map <int,int> &m,vector<int> &pre,int s0,int e0,int s1);
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode (int x) : val(x), left(NULL), right(NULL) {}
};
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={1,2,4,5,3,6};
int b[]={4,2,5,1,3,6};
vector<int> c(a,a+6);
vector<int> d(b,b+6);
unordered_map<int ,int> in;
unordered_map <int,int> :: iterator p;
for(int i=0;i<d.size();++i)
{
in[d[i]]=i;
}
TreeNode *f=reConstructBinaryTree (c,d);
cout<<f->val <<endl;
cout<<f->left ->val <<endl;
cout<<f->right ->val <<endl;
return 0;
}
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
unordered_map<int ,int> in;
unordered_map <int,int> :: iterator p;
if(pre.empty ())
return nullptr;
for(int i=0;i<vin.size();++i)
{
in[vin[i]]=i;
}
return buildtreehelper (in,pre,0,pre.size()-1,0);
}
TreeNode *buildtreehelper(unordered_map <int,int> &m,vector<int> &pre,int s0,int e0,int s1)
{
if(s0>e0)
return nullptr ;
int mid=pre[s1];
int index=m[mid];
int leftlen=index-s0-1;
TreeNode *node=new TreeNode (mid);
node->left=buildtreehelper (m,pre,s0,index-1,s1+1);
node->right =buildtreehelper(m,pre,index-1,e0,s0+leftlen+2);
return node;
}