早教吧 育儿知识 作业答案 考试题库 百科 知识分享

帮我改一下这个程序.谢#include#include#include#defineOVERFLOW-1typedefvoid(*v)(char);structBiTNode{chardata;structBiTNode*lchild;structBiTNode*rchild;};intCreateBitree(structBiTNode**p){charch;printf("pleaseinputaNode'sd

题目详情
帮我改一下这个程序.谢
#include
#include
#include
#define OVERFLOW -1
typedef void (*v)(char );
struct BiTNode
{
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
};
int CreateBitree(struct BiTNode **p)
{
char ch;
printf("please input a Node's data1:\n");
scanf("%c",&ch);
if(ch==' ')
*p=NULL;
else
{
(*p)=(struct BiTNode*)malloc(sizeof(struct BiTNode));
(*p)->data=ch;
CreateBitree(&((*p)->lchild));
CreateBitree(&((*p)->rchild));
}
printf("a");
return 1;
}
void vist(char d)
{
printf("%c",d);
}
void InorderTraverse(struct BiTNode **p,v f)
{
if((*p)!=NULL)
{
if((*p)->lchild!=NULL)
InorderTraverse(&((*p)->lchild),vist);
f((*p)->data);
if((*p)->rchild!=NULL)
InorderTraverse(&((*p)->rchild),vist);
}
}
int main()
{
struct BiTNode *p1;
CreateBitree(&p1);
InorderTraverse(&p1,vist);
return 0;
}
我的目的只是简单的二叉树的建立和中序输出.语法通过了,但是调不出来.
▼优质解答
答案和解析
我仔细调试了一下,创建和遍历二叉树都是没有问题的
问题出在scanf时.scanf函数在是获取输入缓冲区的内容,当遇到Space、Enter、Tab时会停止.
你可以输入:AB空格空格C空格空格
这样是
A
B C
这样的二叉树.中序遍历结果为BAC.
注意输入时空格替换.