二叉树的递归算法到底该怎么理解?

https://blog.csdn.net/sinat_27088253/article/details/51954398
递归bai=传递+回归,即任务的下放du和结果的回收。
这个需要自己慢慢体会zhi,其实所dao有递归算法实质上都是一样的,理解了就万变不离其宗了。
create(node
*root)
{
root=new
node;
写上关于root的信息//初始化root节点
if(root满足自定义的条件)//自定义一个递归的条件,即传递和回归的界限,这是必须的。
{
create(root->lchild);//建左子树
create(root->rchild);//建右子树
}
}

总体上来看,建一颗树,每一次调用creat()都是只创建一个节点,
把剩下的任务下放给create(root->lchild)和create(root->rchild)
而这两个也会重复第一个create(root)的做法,
实质体现的是任务的不断下放,当达到最后的回归的界限的,结果又将不断回收,对应的是函数的不断返回,实质是退栈的过程。
这个过程其实经历了一个不断进栈和不断出栈的过程,对应的是任务的不断下放和不断提交
最后栈空,即告全部任务完成!

当递归调用时每次调用自己时可以看做是压栈过程,当递归条件满足结束时,递归一级一级的返回时可以看做是出

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值