#include<stdio.h>
#include<stdlib.h>
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}Bitnode,*Bitree;
int j = 1;
Bitree i;
void createbitree(Bitree t)
{
char ch;
scanf("%c",&ch);
if(ch == ' ')
t = NULL;
else
{
t = (Bitnode*)malloc(sizeof(Bitnode));
if(j == 1)
i = t;
j++;
t->data = ch;
createbitree(t->lchild);
createbitree(t->rchild);
}
}
void preorder(Bitree t)
{
if(t == NULL) return;
printf("%c",t->data);
preorder(t->lchild);
printf("%c",t->lchild);
preorder(t->rchild);
printf("%c",t->rchild);
}
main()
{
Bitree bt;
createbitree(bt);
preorder(i);
}
没事,一些小细节问题,给你改好了,看注释:
#include<stdio.h>
#include<stdlib.h>
typedef struct bitnode {
char data;
struct bitnode *lchild, *rchild;
}Bitnode, *Bitree;
int j = 1;
Bitree i;
void createbitree(Bitree &t) { // 需要传引用
char ch;
scanf_s("%c", &ch);
char c; // 清空输入缓冲区
while ((c = getchar()) != '\n');
if (ch == ' ')
t = NULL;
else {
t = (Bitnode*)malloc(sizeof(Bitnode));
if (j == 1)
i = t;
j++;
t->data = ch;
createbitree(t->lchild);
createbitree(t->rchild);
}
}
void preorder(Bitree t) {
if (t == NULL) return;
printf("%c", t->data);
preorder(t->lchild);
//printf("%c", t->lchild);
preorder(t->rchild);
//printf("%c", t->rchild);
}
int main() {
Bitree bt = NULL;
createbitree(bt);
preorder(i);
return 0;
}
点个采纳吧!
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632