中易网

创建二叉树出问题,求各位大侠帮忙看看! #include <stdio.h> #include <malloc.h> typedef char Elemtype

答案:1  悬赏:40  
解决时间 2021-02-06 16:55
#include <stdio.h>
#include <malloc.h>
typedef char Elemtype;
typedef int status;
//二叉树的存储表示
typedef struct node
{ Elemtype data;
struct node *lchild,*rchild;
}*Bitree,BiTNode;
void CreateBiTree (Bitree T) //按先序遍历次序输入结点的值
{ Elemtype ch;
scanf("%c",&ch);
if(ch=='/') T=NULL;
else
{ if(T=(BiTNode *)malloc(sizeof(BiTNode)))
T->data=ch;
CreateBiTree (T->lchild);
CreateBiTree (T->rchild);
}
}
void PreOrderTraverse(Bitree T)
{ if(T)
{printf("%c ",T->data); PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);
}}
void InOrderTraverse(Bitree T)
{ if(T)
{ InOrderTraverse(T->lchild); printf("%c ",T->data) ;InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(Bitree T)
{ if(T!=NULL)
{ PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);printf("%c ",T->data);
}
}
void main()
{ Bitree T;
CreateBiTree(T);PreOrderTraverse(T);InOrderTraverse(T); PostOrderTraverse(T);
}
最佳答案
在CreateBitTree时传入参数时,如果传入的是Bitree,那就要确保其非NULL。
如果可能传入NULL(按照你的代码,可以肯定是传入NULL),并在CreateBitTree里分配内存,必须传入一个Bitree的指针或引用。否则你分配的新节点将仅仅被当前形参T所指向,而不被父节点的lchild或者rchild指向。

简单地修改是,将CreateBiTree (Bitree T) 改成CreateBiTree (Bitree &T)
如果是纯C,那么改成CreateBiTree (Bitree *T)然后函数体中用到T的都改成(*T)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
excel 如何设置默认行高
香港药品有效期怎么标注
攀枝花技师学院炳草岗办事处地址有知道的么?
液晶显示器更换灯管步骤是怎样的
AUTOCAD中如何让所有的线变成黑白的?
为什么男人都喜欢有夫之妇
我前几天刚到一个服装店里上班,店里
辣食尚麻辣香锅在哪里啊,我有事要去这个地方
水循环洗面奶和祛痘膏多少钱,我在下面洗面奶
求助主板上一个螺丝断了有一半卡在主板上拿不
八大田我想知道这个在什么地方
初学长笛不考级,买什么样的长笛比较好?
城西医院门诊部地址在什么地方,想过去办事
请问灯管上 TLD 30W/865中TLD代表的是什么意
我知道那一首歌里面有歌词“爱 我的花”
推荐资讯
楚州区钦工镇镇西村村民委员会怎么去啊,有知
园艺专业学什么呢,国内哪个学校读本科的这个
阿里山街/澎湖路(路口)我想知道这个在什么地
任何事有利就一定有弊
沁阳一中贴吧
急急急!!!!!人在深圳,父母在武汉买房写我的名
求教哪里可以给苹果手机换电池
求 请回答1988第20集资源,谢谢
海尔自清洁空调与美的空调有何区别?
QQ暂时被冻结,让我去aq.qq.com/007解除,怎
摩尔庄园的小红鱼怎么钓
电动车控制器刹车及滑行产生的电流,反充回电
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?