二叉树遍历调试时候的运行问题,请高手帮忙解决下 20
#include<stdio.h>#include<malloc.h>#defineNULL0typedefstructBTnode{structBTnode*rchil...
#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef struct BTnode
{
struct BTnode *rchild;
struct BTnode *lchild;
char data;
}BTnode;
void creat(BTnode *b) //用递归的方法建立一个二叉树,先序遍历,用输入字符串的方式建立,当输入空格的时候为空树
{
char ch;
ch=getchar();
getchar();
if(ch==' ')b=NULL;
else
{b=(BTnode *)malloc(sizeof(BTnode));
b->data=ch;
creatmi(b->lchild);
creatmi(b->rchild);}
}
void find(BTnode *b) //用中序遍历输出二叉树
{
BTnode *s[100],*p;
int top=-1;
if(b!=NULL)
{ p=b;
while(top>-1||p!=NULL)
{
while(p!=NULL)
{ top++;
s[top]=p;
p=p->lchild;
}
if(top>-1)
{ p=s[top];
top--;
printf("%c ",p->data);
p=p->rchild;
}
}
}
}
void main()
{
BTnode *b;
b=NULL;
creat(b);
find(b);
}
比如输入a空格空格,没有输出结果 实际上要中序输出序列 请高手帮忙看下 十分感谢
敲一个字符按下回车键 不是整个输入字符串 展开
#include<malloc.h>
#define NULL 0
typedef struct BTnode
{
struct BTnode *rchild;
struct BTnode *lchild;
char data;
}BTnode;
void creat(BTnode *b) //用递归的方法建立一个二叉树,先序遍历,用输入字符串的方式建立,当输入空格的时候为空树
{
char ch;
ch=getchar();
getchar();
if(ch==' ')b=NULL;
else
{b=(BTnode *)malloc(sizeof(BTnode));
b->data=ch;
creatmi(b->lchild);
creatmi(b->rchild);}
}
void find(BTnode *b) //用中序遍历输出二叉树
{
BTnode *s[100],*p;
int top=-1;
if(b!=NULL)
{ p=b;
while(top>-1||p!=NULL)
{
while(p!=NULL)
{ top++;
s[top]=p;
p=p->lchild;
}
if(top>-1)
{ p=s[top];
top--;
printf("%c ",p->data);
p=p->rchild;
}
}
}
}
void main()
{
BTnode *b;
b=NULL;
creat(b);
find(b);
}
比如输入a空格空格,没有输出结果 实际上要中序输出序列 请高手帮忙看下 十分感谢
敲一个字符按下回车键 不是整个输入字符串 展开
2个回答
展开全部
void creat(BTnode *b) //用举颤递归的方法建立一个二叉树,先序遍历,用输入字符串的方式建立,当输入空格的时候为空树正前败
{
char ch;
ch=getchar();
getchar();
if(ch==' ')b=NULL;
else
{b=(BTnode *)malloc(sizeof(BTnode));
b->data=ch;
creatmi(b->lchild);/*creatmi改为creat试试?因为前面没有creatmi函数,这样写不行啊悔游*/
creatmi(b->rchild);}
}
{
char ch;
ch=getchar();
getchar();
if(ch==' ')b=NULL;
else
{b=(BTnode *)malloc(sizeof(BTnode));
b->data=ch;
creatmi(b->lchild);/*creatmi改为creat试试?因为前面没有creatmi函数,这样写不行啊悔游*/
creatmi(b->rchild);}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub preorder(a As sbnode)
Dim a1 As sbnode, a2 As sbnode ’改乱袭型成 这样就可以了
If a.lcd = 0 And a.rcd = 0 Then
Print a.Data;
Else
If a.lcd <禅唯>哗猜 0 Or a.rcd <> 0 Then
a1 = a.lcd
a2 = a.rcd
Print a.Data
Call preorder(tree(a1))
Call preorder(tree(a2))
End If
End If
End Sub
Dim a1 As sbnode, a2 As sbnode ’改乱袭型成 这样就可以了
If a.lcd = 0 And a.rcd = 0 Then
Print a.Data;
Else
If a.lcd <禅唯>哗猜 0 Or a.rcd <> 0 Then
a1 = a.lcd
a2 = a.rcd
Print a.Data
Call preorder(tree(a1))
Call preorder(tree(a2))
End If
End If
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询