小的C++初学者一枚,在做一个题目:给出preorder和inorder二叉树顺序,推出potorder顺序。目前程序已经写完,可是总是在运行时崩溃,不知哪里出了问题?
题目页面:http://wirelesslab.sjtu.edu.cn:8088/jol/problem.php?cid=1005&pid=0
...
#include
#include
#include
using namespace std;
int length;
struct TreeNode
{
struct TreeNode* left;
struct TreeNode* right;
char elem;
};
void sort(char preorder, char *inorder, int length)
{
TreeNode node = new TreeNode;
node->elem = *preorder;
int rootIndex = 0;
for(;rootIndex < length; rootIndex++)
{
if(inorder[rootIndex] == *preorder)
break;
}
//Left
sort(inorder, preorder +1, rootIndex);
//Right
sort(inorder + rootIndex + 1, preorder + rootIndex + 1, length - (rootIndex + 1));
cout<<node->elem<<endl;
delete node;
return;
}
int main()
{
int time;
scanf("%d", &time);
int count=0;
while(count < time)
{
string str;
char temp;
int i;
while((temp=cin.get())!='\n')
{
str +=temp;
}
length =str.length();
char* preorder = new char[length];
char* inorder = new char[length];
for(i = 0;i<length;i++)
{
preorder[i]=str[i];
}
for(i=0;i<length;i++)
{
scanf("%c", inorder[i]);
}
sort(preorder, inorder, length);
count++;
delete preorder;
delete inorder;
}
return 0;
}