如何用c语言建立二叉树

用以下代码建立二叉树,例如输入AB C #
这个代码运行先序遍历的时候会报错,调试时好像是T会重新变为NULL
而把两个函数少量改成C++的代码后测试可以正常先序遍历
请问错误在哪?怎么写成正确的C语言代码?

int CreateBiTree(BiTree T) //构造二叉链表表示的二叉树,按先序输入二叉树结点的值,空格字符表示空树.
{
ElemType ch;
scanf("%c",&ch);
if(ch=='#')
return 2;
if(ch==' ')
T=NULL;
else
{
if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))
exit(0);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;
}

int PreOrderTraverse(BiTree root) //先序遍历二叉树,打印元素.(递归)
{
if(root!=NULL)
{
printf("%c",root->data);
PreOrderTraverse(root->lchild);
PreOrderTraverse(root->rchild);
}
return 1;
}
树结构

typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

代码不全,怎么帮你调试呢? 请提供完整代码追问

代码比较长,请留个联系方式我发过去

追答

百度云共享,然后发链接给我,或私信

已回信,删除那个函数你自己调整一下吧,主要是建立树的问题,传递变量不当,导致树的建立有问题!

追问

运行了你发来的代码,先创建二叉树然后先序遍历,还是会跳出这样提示然后转到调试,在你那里已经能正常运行了吗?

追答

linux和windows下运行效果确实不同!
create函数还是存在问题!

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜