递归调用中的递归序

从刚开始接触递归,到接触二叉树递归遍历,简单几行代码就能实现前中后序遍历,而且,前中后序遍历的代码基本一致,觉得好神奇

节点递归顺序分析

代码是遍历二叉树时常用的递归代码,在1位置raverse函数返回值head节点,在2位置raverse函数返回值左孩子节点,在3位置traverse函数返回值为右孩子节点

    public static void traverse(Node head){
        if(head == null)
            return ;
        // 1 先序
        traverse(head.left);
        // 2 中序
        traverse(head.left);
        //3 后续
    }
  • 以先序为例子*
    看图


    递归过程

根据递归过程,可以发现,二叉树的每个节点会到达三次 ,根据图中,访问顺序为 12444255521...
因此在第一次到达节点进行处理就是二叉树的先序遍历,第二次到达进行处理就是中序遍历,第三次到达进行处理就是后序遍历。

递归序的作用

根据图中的访问顺序可以发现,节点可以收集左右节点的信息,即问题可以得到子问题的信息,是利用树做动态规划的基础!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容