主题:[讨论]二叉树的遍历问题
二叉树 输入问题
程序一直停留在输入函数中 输出语句没有运行
请问这个是甚么原因
#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{
char data;
struct tree *l;/*左儿子*/
struct tree *r;
}tr;
main()
{
tr *head=NULL;
tr *create();/*二叉树的建立*/
void preorder();
void inorder();
void postorder();
system("cls");
head=create(head);
printf("\n\n");
printf("\nThe preorder is:");
preorder(head);
printf("\nThe inorder is:");
inorder(head);
printf("\nThe postorder is:");
postorder(head);
}
tr *create(tr *t)/*二叉树的建立*/
{
tr *k=NULL;
char ch;
scanf("%s",&ch);
if(ch=='!')t=NULL;
else { t=(tr *)malloc(sizeof(tr));
t->data=ch;
t->l=t->r=NULL;
t->l=create(k);
t->r=create(k);
}
return(t);
}
void preorder(tr *head)/*先续遍例*/
{ tr *t=NULL;
t=head;
if(t)
{ printf("%c\t",t->data);
preorder(t->l);
preorder(t->r);
}
}
void inorder(tr *head)/*中续遍例*/
{ tr *t=NULL;
t=head;
if(t)
{
inorder(t->l);
printf("%c\t",t->data);
inorder(t->l);
}
}
void postorder(tr *head)/*后续遍例*/
{ tr *t=NULL;
t=head;
if(t)
{
postorder(t->l);
postorder(t->l);
printf("%c\t",t->data);
}
}
程序一直停留在输入函数中 输出语句没有运行
请问这个是甚么原因
#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{
char data;
struct tree *l;/*左儿子*/
struct tree *r;
}tr;
main()
{
tr *head=NULL;
tr *create();/*二叉树的建立*/
void preorder();
void inorder();
void postorder();
system("cls");
head=create(head);
printf("\n\n");
printf("\nThe preorder is:");
preorder(head);
printf("\nThe inorder is:");
inorder(head);
printf("\nThe postorder is:");
postorder(head);
}
tr *create(tr *t)/*二叉树的建立*/
{
tr *k=NULL;
char ch;
scanf("%s",&ch);
if(ch=='!')t=NULL;
else { t=(tr *)malloc(sizeof(tr));
t->data=ch;
t->l=t->r=NULL;
t->l=create(k);
t->r=create(k);
}
return(t);
}
void preorder(tr *head)/*先续遍例*/
{ tr *t=NULL;
t=head;
if(t)
{ printf("%c\t",t->data);
preorder(t->l);
preorder(t->r);
}
}
void inorder(tr *head)/*中续遍例*/
{ tr *t=NULL;
t=head;
if(t)
{
inorder(t->l);
printf("%c\t",t->data);
inorder(t->l);
}
}
void postorder(tr *head)/*后续遍例*/
{ tr *t=NULL;
t=head;
if(t)
{
postorder(t->l);
postorder(t->l);
printf("%c\t",t->data);
}
}