想请高手帮忙分析一下这个过程,详细一点,最好能通过出栈入栈来具体说明

Voiddestroy(BinTreeNode*current){//删除根为current的子树if(current!=NULL){destroy(current->l... Void destroy ( BinTreeNode *current )
{//删除根为current的子树
if ( current != NULL ) {
destroy ( current -> leftChild );
destroy ( current -> rightChild );
delete current;
}
}
展开
 我来答
Irreproducible
2012-04-20 · TA获得超过451个赞
知道小有建树答主
回答量:305
采纳率:100%
帮助的人:465万
展开全部
一开始调用destroy 函数,系统在调用堆栈上加了一层,存储该次调用的信息,包括current指针的值,等等。在destroy 函数中,如果又调用了destroy 则,系统在调用堆栈上再加一层,存在这一次调用的信息,这时候的current将会是上一层的current->leftChild。这一次调用结束后,系统将会把调用堆栈的最上层弹出,剩下最开始的那一层,于是current指向最初的那个节点。然后执行destroy ( current -> rightChild );

如果你要看调用堆栈的出入,就是这样。但是关于递归函数的掌握,我向来是不建议以栈的方式取去理解的
更多追问追答
追问
貌似不大懂,您有空的话,能不能写个程序让我看看过程呀?
追答
额... 写什么程序啊....

其实这个调用过程没有什么复杂的嘛,如果一个函数a调用b,b调用c,c又调用d,这你肯定没问题。

只不过现在abcd都是同一个函数了,你要不能理解,就还是把他们理解成4个函数,但是这4个函数做的事情是一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诺达通检测技术
2024-02-18 广告
可以选择英格尔技术这样的大型第三方检测机构,在成分分析和配方分析方面有充足的经验,并且在国内多地设有分支机构。 配方分析可以找苏州诺达通检测技术有限公司,苏州诺达通检测技术有限公司成立于2019年,主要是针对食品、药品、化学化工、材料等相关... 点击进入详情页
本回答由诺达通检测技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式