
想请高手帮忙分析一下这个过程,详细一点,最好能通过出栈入栈来具体说明
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;
}
} 展开
{//删除根为current的子树
if ( current != NULL ) {
destroy ( current -> leftChild );
destroy ( current -> rightChild );
delete current;
}
} 展开
1个回答
展开全部
一开始调用destroy 函数,系统在调用堆栈上加了一层,存储该次调用的信息,包括current指针的值,等等。在destroy 函数中,如果又调用了destroy 则,系统在调用堆栈上再加一层,存在这一次调用的信息,这时候的current将会是上一层的current->leftChild。这一次调用结束后,系统将会把调用堆栈的最上层弹出,剩下最开始的那一层,于是current指向最初的那个节点。然后执行destroy ( current -> rightChild );
如果你要看调用堆栈的出入,就是这样。但是关于递归函数的掌握,我向来是不建议以栈的方式取去理解的
如果你要看调用堆栈的出入,就是这样。但是关于递归函数的掌握,我向来是不建议以栈的方式取去理解的
更多追问追答
追问
貌似不大懂,您有空的话,能不能写个程序让我看看过程呀?
追答
额... 写什么程序啊....
其实这个调用过程没有什么复杂的嘛,如果一个函数a调用b,b调用c,c又调用d,这你肯定没问题。
只不过现在abcd都是同一个函数了,你要不能理解,就还是把他们理解成4个函数,但是这4个函数做的事情是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2024-02-18 广告
可以选择英格尔技术这样的大型第三方检测机构,在成分分析和配方分析方面有充足的经验,并且在国内多地设有分支机构。
配方分析可以找苏州诺达通检测技术有限公司,苏州诺达通检测技术有限公司成立于2019年,主要是针对食品、药品、化学化工、材料等相关...
点击进入详情页
本回答由诺达通检测技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询