用以下代码建立二叉树,例如输入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函数还是存在问题!