递归语句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;
}
展开
 我来答
岁月哪曾斑驳
2013-02-09 · TA获得超过742个赞
知道小有建树答主
回答量:278
采纳率:50%
帮助的人:351万
展开全部
递归进出栈没什么细讲的啊,就是不断压入调用函数进行处理,处理完就返回值并弹出函数,这样直到栈空。这里不循环递归的条件是输入值为'#'。先序创建就是先根结点,后左子树,最后有子树,对每个子树都进行如此的创建操作。
给你改下程序,实际运行下,很容易理解的。
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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式