递归语句1,和递归语句2,什么时候执行,就是详细的进栈,出栈是如何能运行的,这个二叉树是如何建立的,
这是二叉树的建立,详细一点。。。小弟跪拜您嘞,。。。。bitreecreate()//先序创建{bitreeroot=NULL;charc;scanf("%c",&c);...
这是二叉树的建立,详细一点。。。小弟跪拜您嘞,。。。。
bitree create()//先序创建
{
bitree root=NULL;
char c;
scanf("%c",&c);
fflush(stdin);
if(c=='#')return NULL;
else
{
root=(bitnode*)malloc(sizeof(bitnode));
root->data=c;
root->lchild=create();printf("data1=%c\n",root->data); 语句1
root->rchild=create();printf("data2=%c\n",root->data); 语句2
}
return root;
} 展开
bitree create()//先序创建
{
bitree root=NULL;
char c;
scanf("%c",&c);
fflush(stdin);
if(c=='#')return NULL;
else
{
root=(bitnode*)malloc(sizeof(bitnode));
root->data=c;
root->lchild=create();printf("data1=%c\n",root->data); 语句1
root->rchild=create();printf("data2=%c\n",root->data); 语句2
}
return root;
} 展开
1个回答
展开全部
递归进出栈没什么细讲的啊,就是不断压入调用函数进行处理,处理完就返回值并弹出函数,这样直到栈空。这里不循环递归的条件是输入值为'#'。先序创建就是先根结点,后左子树,最后有子树,对每个子树都进行如此的创建操作。
给你改下程序,实际运行下,很容易理解的。
bitree create()//先序创建
{
bitree root=NULL;
char c;
scanf("%c",&c);
fflush(stdin);
if(c=='#')return NULL;
else
{
printf("创建值为%c的结点\n", c);
root=(bitnode*)malloc(sizeof(bitnode));
root->data=c;
printf("创建值为%c的结点的左子结点\n", c);
root->lchild=create();
printf("创建值为%c的结点的右子结点\n", c);
root->rchild=create();
}
return root;
}
给你改下程序,实际运行下,很容易理解的。
bitree create()//先序创建
{
bitree root=NULL;
char c;
scanf("%c",&c);
fflush(stdin);
if(c=='#')return NULL;
else
{
printf("创建值为%c的结点\n", c);
root=(bitnode*)malloc(sizeof(bitnode));
root->data=c;
printf("创建值为%c的结点的左子结点\n", c);
root->lchild=create();
printf("创建值为%c的结点的右子结点\n", c);
root->rchild=create();
}
return root;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询