#include"stdio.h"
typedef struct tree
{
int date;
struct tree *lchild;
struct tree *rchild;
}tree;
void createtree(tree *&t)
{
int num;
scanf("%d",&num);
if(num==0)
t=NULL;
else
{
t=new tree;
t->date=num;
createtree(t->lchild);
createtree(t->rchild);
}
}
void midprintf(tree *t)
{
if(t==NULL)
;
else
{ midprintf(t->lchild);
printf("%d\t",t->date);
midprintf(t->rchild );
}
}
int main()
{
tree *t=NULL;
printf("请输入整数\n");
createtree(t);
midprintf(t);
}
tree* &t; 是C++的语法,这里形参是一个tree指针的引用。把tree*看作数据类型,&t就是实参t的引用。void createtree(tree *&t) 意思是把实参t的引用传入函数中,对引用操作就是对原变量操作。可以参看这篇文章:https://zhuanlan.zhihu.com/p/139543762
类似的,如果用void createtree(tree **t)也可以实现,形参是tree指针的指针,可能方便你理解。
#include"stdio.h"
typedef struct tree
{
int date;
struct tree *lchild;
struct tree *rchild;
}tree;
void createtree(tree **t)
{
int num;
scanf("%d",&num);
if(num==0)
*t=NULL;
else
{
*t=new tree;
(*t)->date=num;
createtree(&((*t)->lchild));
createtree(&((*t)->rchild));
}
}
void midprintf(tree *t)
{
if(t==NULL)
;
else
{ midprintf(t->lchild);
printf("%d\t",t->date);
midprintf(t->rchild );
}
}
int main()
{
tree *t=NULL;
printf("请输入整数\n");
createtree(&t);
midprintf(t);
}