求大神看看这段c代码有啥问题(建立二叉树)为什么输入的时候结束不了,急求!!!!

#include
#include
typedef struct Node
{
char data;
struct Node* LChild;
struct Node* RChild;
}BiTNode,*BiTree;
int main()
{
void CreateBiTree(BiTree *bt);
BiTree bt;
printf("输入字符序列建立二叉链表:");
CreateBiTree(&bt);
return 0;
}
void CreateBiTree(BiTree *bt)
{
char ch;
ch=getchar();
if(ch=='.')*bt=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)->data=ch;
CreateBiTree(&((*bt)->LChild));
CreateBiTree(&((*bt)->RChild));
}
}

2个回答

没有分支条件,一直向左递归

tc3311035
tc3311035 谢谢,但如果输入.的话不是会赋予空指针从而递归结束吗,而且输入的时候如果这么输如"asf.........."再敲击回车就会结束了,想问下这是为什么
3 年多之前 回复

说明你还是没有理解数啊。

 比如你输入:av..c..
 那么结果就是:
 //    a
 //   / \
 //  v   c

像你输入的"asf.........."那么就是这样的:
//       a
//      /  \
//    s
//  /   \
// f

不理解程序运行的顺序,可以单步调试,一步步查看。
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐