早教吧作业答案频道 -->其他-->
帮我改一下这个程序.谢#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;
}
我的目的只是简单的二叉树的建立和中序输出.语法通过了,但是调不出来.
#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.
注意输入时空格替换.
问题出在scanf时.scanf函数在是获取输入缓冲区的内容,当遇到Space、Enter、Tab时会停止.
你可以输入:AB空格空格C空格空格
这样是
A
B C
这样的二叉树.中序遍历结果为BAC.
注意输入时空格替换.
看了 帮我改一下这个程序.谢#in...的网友还看了以下:
看图,根据图意把所给字母组成单词.1、OurP.E.teacherisvery(g,n,u,o,y 2020-05-19 …
求教英语若干题,QAQ辩音1.r{ea}dbr{ea}d()2.st{u}dentb{ui}ldi 2020-05-20 …
下列加点字的读音、字形全对的一项是()A.吮取(shǔn)狩猎(shǒu)蔽开(piē)嗉囊(sù 2020-06-22 …
下列加点字的读音、字形全对的一项是()A.吮取(shǔn)狩猎(shǒu)蔽开(piē)嗉囊(sù 2020-06-22 …
帮我改一下这个程序.谢#include#include#include#defineOVERFLO 2020-06-22 …
下列加横线字的读音,全都正确的一项是()A.誊写(téng)渎圣(dú)屡次(lǒu)精湛(zhà 2020-07-16 …
进制换算(213)D=()B=()H=()O(69.625)D=()D=()B=()O(127)D 2020-07-19 …
排列成正确的句子:me,I,go,excuse,haveto.排列成正确的单词:1.c,d,e,s, 2020-11-01 …
一、积累与运用(20分)1.下列加点字注音完全正确的一项是(3分)A.怄气(òu)窥望(guī)阎王 2020-12-12 …
下列各项中注音有误的一项是()A.mái阴霾不散埋怨mái埋藏máiB.móu明眸善睐牟取暴利móu 2020-12-26 …