问题遇到的现象和发生背景
代码能运行,但是最后崩溃了,挂掉了。
问题背景是我想创建一个二叉树并前序中序递归遍历打印并最后释放所有空间。
问题相关代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef struct Node
{
char data;
struct Node *lchild;
struct Node *rchild;
}bitnode;
void createtree(bitnode **T)
{
assert(*T);
char ch;
scanf("%c", &ch);
while (getchar() != '\n');
if (ch == '#')
*T = NULL;
else
{
*T = (bitnode*)malloc(sizeof(bitnode));
(*T)->data = ch;
createtree(&((*T)->lchild));
createtree(&((*T)->rchild));
}
}
void 前序遍历(bitnode **T)
{
if (*T == NULL)
{
return;
}
printf("%d ", (*T)->data);
前序遍历(&((*T)->lchild));
前序遍历(&((*T)->rchild));
}
void 中序遍历(bitnode **T)
{
if (*T == NULL)
{
return;
}
中序遍历(&((*T)->lchild));
printf("%d ", (*T)->data);
中序遍历(&((*T)->rchild));
}
void 释放内存空间(bitnode** T)
{
if (*T == NULL)
{
return;
}
/bitnode cur = T;/
while (T != NULL)
{
释放内存空间(&((*T)->lchild));
释放内存空间(&((*T)->rchild));
free(T);
}
}
int main()
{
bitnode * T;
/T->lchild = NULL;
T->rchild = NULL;/
/bitnode * p = T;/
printf("先序递归创建\n");
createtree(&T); //这里传入指针的地址
前序遍历(&T);
中序遍历(&T);
释放内存空间(&T);
return 0;
}
运行结果及报错内容
最后出来一个框

我的解答思路和尝试过的方法
怎么着都不行了
我想要达到的结果
不想程序崩溃。正确运行应该怎样改代码?
我编辑的时候看着好好的,一发出来全都挤在一块我也不知道该怎么办了,劳烦大家废废眼睛了,谢谢大家。