满意答案
或许只是习
2013.08.26
采纳率:55% 等级:12
已帮助:6678人
1.建树的函数不对,应该传递引用,或者是设计一个返回值。
2.另外没有释放内存的函数。
#include
#include
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}*BiTree;
void CreateBiTree(BiTree &T)//应该传递引用 或者可以设计一个返回值
{
int n;
printf("请输入数据:\n");
scanf("%d",&n);
getchar();
if(n==0)
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
{
printf("error!");
exit(0);
}
T->data=n;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrderBiTree(BiTree T)
{
if(T)
{
printf("%-3d\n",T->data);
PreOrderBiTree(T->lchild);
PreOrderBiTree(T->rchild);
}
}
void delete_tree(BiTree T)//后序遍历释放内存
{
if(T)
{
delete_tree(T->lchild);
delete_tree(T->rchild);
free(T);
}
}
void main()
{
BiTree T;
CreateBiTree(T);
PreOrderBiTree(T);
delete_tree(T);
}
00分享举报