#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MAX_SIZE 100
bool flag=true;
typedef struct RootOfTree
{
int data;
RootOfTree *Lchild,*Rchild;
}*Tree;
/*创建树*/
void createTree(Tree &t)
{
int k;
scanf("%d",&k);
t = (Tree)malloc(sizeof(Tree));
if(t!=NULL&&k!=0)
{
t->data = k ;
printf("创建左子树\n");
createTree(t->Lchild);
printf("创建右子树\n");
createTree(t->Rchild);
}
else if(t!=NULL&&k==0)
{
t = NULL;
printf("没有创建子树\n");
}
}
/*前序输出*/
void preorder(Tree t)
{
if(t!=NULL)
{
if(0!=t->data)
printf("%3d",t->data );
preorder(t->Lchild);
preorder(t->Rchild );
}
}
/*释放节点*/
void deleteNode(Tree q)
{
if(q!=NULL)
{
deleteNode(q->Lchild);
deleteNode(q->Rchild);
delete q;
}
}
/*删除子树*/
void deleteSubtree(Tree &t,int k)
{
//先确定要删的子树的根
// q = (Tree)malloc(sizeof(Tree));
// q->data = k;
Tree q;
if(t!=NULL&&flag)
{
if(t->data==k)
{
flag = false;
q = t ;
t = NULL;
deleteNode(q);
exit(0);
}
else
{
deleteSubtree(t->Lchild,k);
deleteSubtree(t->Rchild,k);
}
}
//printf("未找此子树!\n");
}
void main()
{
printf("创建树:\n");
Tree t;
createTree(t);
printf("输入要删除树根节点:\n");
int k;
scanf("%d",&k);
deleteSubtree(t,k);
//preorder(t);
printf("\n");
}
请问一下这段代码哪错了?