先序建立一棵二叉树的递归算法,当输入*时表示空树,问题在哪?请高手指点。

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:01:45
#include <stdio.h>
#include <stdlib.h>
#define NULL 0
typedef struct TNode
{
char data;
struct TNode *lchild,*rchild;
}Node,*Tree;
Tree creatree(Tree T)
{
char c;
scanf("%c",&c);
printf("测试点8");
if(c!='*')
{
T=(Tree)malloc(sizeof(Node));
printf("测试点7");
T->data=c;
printf("测试点9");
printf("%c",T->data);
printf("测试点4");
creatree(T->lchild);
printf("测试点5");
creatree(T->rchild);
printf("测试点6");
}
else
{
printf("测试点3");
T=NULL;
}
return T;
}//建立一棵二叉树
void pretraverse(Tree T)
{
if(T)
{
printf("%d ",T->data);
printf("测试点1");
pretraverse(T->lchild);
pretraverse(T->rchild);
}
print

因为你输入d+回车是输入两个字符
不知道你有没有注意
测试点8测试点7测试点9d测试点4测试点8测试点7测试点9(这里有个回车符)
测试点4

我可以给你我写的C++的关于使用二叉树的扩展序列,我不习惯看C语言的代码。如果你需要的话,给我留言