#创建二叉树,并先序遍历# 代码没有出错,但是输入:ab##cd##,没有显示结果出来 (*꒦ິ⌓꒦ີ)求大佬帮忙看一下
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct node {
char data; //存放数据域
struct node *lchild,*rchild;//创建两个结构体指针变量 ,也就是定义了两个指向该结构体的指针 。遍历左子树指针,遍历右子树指针
}bnode;
typedef struct node blink;//创建新的标签,用blink来代替struct node
void xian(blink bt)
{
if(bt)
{
printf("%c",bt->data);
xian(bt->lchild);
xian(bt->rchild);
}
}
blink create(blink bt)
{
char ch;
scanf("%c",&ch);
getchar();
if(ch=='#')
bt=NULL;
else
{
bt=(blink)malloc(sizeof(bnode));
if(!bt)
exit(-1);
bt->data=ch;
bt->lchild=create(bt->lchild);
bt->rchild=create(bt->rchild);
}
return bt;
}
int main()
{
blink bt=NULL;
create(bt);
xian(bt);
return 0;
}
你题目的解答代码如下:
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node
{
char data; //存放数据域
struct node *lchild, *rchild; //创建两个结构体指针变量 ,也就是定义了两个指向该结构体的指针 。遍历左子树指针,遍历右子树指针
} bnode;
typedef struct node blink; //创建新的标签,用blink来代替struct node
void xian(blink *bt)
{
if (bt)
{
printf("%c", bt->data);
xian(bt->lchild);
xian(bt->rchild);
}
}
blink* create()
{
blink *bt;
char ch;
scanf("%c", &ch);
getchar();
if (ch == '#')
bt = NULL;
else
{
bt = (blink *)malloc(sizeof(bnode));
if (!bt)
exit(-1);
bt->data = ch;
bt->lchild = create();
bt->rchild = create();
}
return bt;
}
int main()
{
blink *bt = NULL;
bt = create();
xian(bt);
return 0;
}
如有帮助,望采纳!谢谢!