算法通关村第七关——树前/中/后序遍历白银挑战笔记

该部分内容主要对递归方式实现树的前中后序遍历进行总结,三种方式的递归实现方式代码量小,思维量大,重点应该放在递归方式如何进行的,怎么画出递归调用图,为黄金挑战笔记打好铺垫!

1.前、中、后序遍历模板

前中后序遍历过程无非是根节点的访问顺序,访问左子树和访问右子树的功能都能通过递归的方式实现,因此逻辑易懂,直接上三种方式的模板代码!

    public static void preOrder(TreeNode root, List<Integer> res) {
        if (root == null) { 
            return;
        }
        res.add(root.val);
        preOrder(root.left, res);
        preOrder(root.right, res);
    }


    public static void inOrder(TreeNode root, List<Integer> res) {
        if (root == null) { 
            return;
        }
        inOrder(root.left, res);
        res.add(root.val);
        inOrder(root.right, res);
    }


    public static void postOrder(TreeNode root, List<Integer> res) {
        if (root == null) {
            return;
        }
        postOrder(root.left, res);
        postOrder(root.right, res);
        res.add(root.val);
    }

2.前、中、后序遍历的递归调用图

 以中序遍历的递归调用图为例,递归调用出口是当前树节点为空,否则在函数栈中保存现在参数、局部变量和返回值地址,进行下一个子树的调用过程当左子树全部递归调用结束,当前函数栈栈顶保留了根节点的参数、局部变量和返回值地址,因此会访问根节点,在进入根节点的右子树进行递归。

仔细看上面的递归调用图,标清箭头序号,就掌握了前中后序的递归调用原理,也将顺利攻克前中后序遍历的迭代实现方式(因为其本质就是模拟递归调用过程)!

OK,《算法通关村第七关——树前/中/后序遍历白银挑战笔记》结束,喜欢的朋友三联加关注!关注鱼市带给你不一样的算法小感悟!(幻听)

再次,感谢鱼骨头教官的学习路线!鱼皮的宣传!小y的陪伴!ok,拜拜,第七关第三幕见!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值