64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
struct TreeNode
{
int mValue;
TreeNode *mRight,*mLeft;
};
TreeNode* ConstructCore(int *per_begin,int *per_end,int *in_begin,int *in_end)
{
int test=*per_begin; //在这里异常 TreeNode *root =new TreeNode;
root->mValue = per_begin[0];
int *temp_in = in_begin;
while (*per_begin!=*temp_in&&temp_in<=in_end)
{
temp_in++;
}
int leftLength = temp_in-in_begin;
root->mLeft=ConstructCore(per_begin+1,per_begin+leftLength,in_begin,temp_in-1);
root->mRight=ConstructCore(per_begin+leftLength+1,per_end,temp_in+1,in_end);
return root;
}
//后续输出
void postPrint(TreeNode *root)
{
if (root)
{
postPrint(root->mLeft);
postPrint(root->mRight);
cout<<root->mValue<<" ";
}
}
void test1(int *p)
{
int temp=*p;//用这个测试不异常 cout<<temp<<endl;
}
int main()
{
const int length = 8;
int preorder[length] = {1, 2, 4, 7, 3, 5, 6, 8};
int inorder[length] = {4, 7, 2, 1, 5, 3, 8, 6};
TreeNode *root = ConstructCore(preorder,preorder+length-1,inorder,inorder+length-1);
postPrint(root);
//test1(preorder);//用这个测试不异常 //test1(preorder+length-1);
system("pause");
return 0;
}