每次程序都崩溃,求大神debug

小的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;

}

node->elem = *preorder; 确定是这样的

一定是内存越界了,再检查代码,特别是指针

你的代码,是对内存的指针操作,一旦内存越界,自然就崩盘了 。

崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

TreeNode node = new TreeNode;这句就出错了,要加上struct