回复 8楼 TonyDeng
/*前序遍历中序遍历什么的都是一个道理,只是输出的时候的顺序不同,都是先访问左孩子或者右孩子后在访问另一边*/
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *l;
struct node *r;
}Tree;
int count
= 0;
Tree *creat(Tree *p)
{
char c;
if((c = getchar()) == ',')
p = NULL;
else
{
p = (Tree*)malloc(sizeof(Tree));
p->data = c;
p->l = creat(p->l);
p->r = creat(p->r);
}
return p;
}
void intravel(Tree *p)
{
if(p != NULL)
{
intravel(p->l);
printf("%c",p->data);/*先打印底层的左孩子,然后最底层最左边的右孩子,于先序不同的就是先序的左孩子从根开始打,而中序从底层开始*/
intravel(p->r);
}
}
void lasttravel(Tree *p)/*先打印最底层的*/
{
if(p != NULL)
{
lasttravel(p->l); //if(p->l!=NULL)printf("@%c\n",p->l->data);
lasttravel(p->r); //if(p->r!=NULL)printf("!%c\n",p->r->data);
printf("%c",p->data);
}
}
int main()
{
Tree *p;
p = creat(p);
intravel(p);
printf("\n");
lasttravel(p);
printf("\n");
return 0;
}
我的输入是在子函数里面的。怎么在主函数里面多组输入