开发者社区> 问答> 正文

建立二叉树的递归算法怎样理解??

建立二叉树的递归算法怎样理解??

展开
收起
知与谁同 2018-07-21 13:28:31 3163 0
2 条回答
写回答
取消 提交回答
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    不断地在纸上或脑子里执行每一步,在一点要深刻理解函数的调用和形参和实参的概念,还有return语句。熟能生巧一位牛人说的.
    2019-07-17 22:54:52
    赞同 展开评论 打赏
  • 递归=传递+回归,即任务的下放和结果的回收。
    这个需要自己慢慢体会,其实所有递归算法实质上都是一样的,理解了就万变不离其宗了。
    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)的做法,实质体现的是任务的不断下放,当达到最后的回归的界限的,结果又将不断回收,对应的是函数的不断返回,实质是退栈的过程。这个过程其实经历了一个不断进栈和不断出栈的过程,对应的是任务的不断下放和不断提交,最后栈空,即告全部任务完成。
    2019-07-17 22:54:52
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载