主题:[讨论]二叉树的遍历建树递归算法怎样结束输入?
#include<stdio.h>
#include<malloc.h>
#define datatype char
typedef struct node
{datatype data;
struct node *lchild,*rchild;
}JD;
JD *crt_bt_pre(JD *bt)
{char ch;
printf("ch=");
scanf("%c",&ch);
if(ch==' ') bt=NULL;
else
{bt=(JD*)malloc(sizeof(JD));
bt->data=ch;
bt->lchild=crt_bt_pre(bt->lchild);
bt->rchild=crt_bt_pre(bt->rchild);
}
return(bt);
}
void preorder(JD *bt)
{if(bt!=NULL)
{printf("%c",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void main()
{JD *bt;
crt_bt_pre(bt);
preorder(bt);}
这个程序运行起来一直出现ch=
输入一个元素后,又出现ch=ch=
出不来结果,我不知道这个递归算法怎么能实现结束输入结点数据,难道一直这样永无边境的输入东西?
假如我以!为结束输入标志,该怎么实现呢?
#include<malloc.h>
#define datatype char
typedef struct node
{datatype data;
struct node *lchild,*rchild;
}JD;
JD *crt_bt_pre(JD *bt)
{char ch;
printf("ch=");
scanf("%c",&ch);
if(ch==' ') bt=NULL;
else
{bt=(JD*)malloc(sizeof(JD));
bt->data=ch;
bt->lchild=crt_bt_pre(bt->lchild);
bt->rchild=crt_bt_pre(bt->rchild);
}
return(bt);
}
void preorder(JD *bt)
{if(bt!=NULL)
{printf("%c",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void main()
{JD *bt;
crt_bt_pre(bt);
preorder(bt);}
这个程序运行起来一直出现ch=
输入一个元素后,又出现ch=ch=
出不来结果,我不知道这个递归算法怎么能实现结束输入结点数据,难道一直这样永无边境的输入东西?
假如我以!为结束输入标志,该怎么实现呢?