必须掌握,二叉树的前中后序遍历(迭代+递归)详细代码

对于二叉树的三种遍历方式,无论是简单的递归写法,还是迭代写法,都是在面试中容易被考到的,所以这篇文章就把这个常考知识点给解释清楚。1.二叉树的前序遍历(LeetCode 144题)前序遍历的关键在于:先遍历根节点,再遍历左子树,再遍历右子树。即:根→左→右(1) 递归写法对于递归写法大家肯定都是非常清楚的,因为它的代码很简单,也比较容易理解,如下:class Solution { List<Integer> res = new ArrayList<>();
摘要由CSDN通过智能技术生成

对于二叉树的三种遍历方式,无论是简单的递归写法,还是迭代写法,都是在面试中容易被考到的,所以这篇文章就把这个常考知识点给解释清楚。

1.二叉树的前序遍历(LeetCode 144题)

前序遍历的关键在于:先遍历根节点,再遍历左子树,再遍历右子树。

即:根→左→右

(1) 递归写法

对于递归写法大家肯定都是非常清楚的,因为它的代码很简单,也比较容易理解,如下:

class Solution {
   
    List<Integer> res = new ArrayList<>();
    public List<Integer> preorderTraversal(TreeNode root) {
   
        if(root == null) return res;
        dfs(root);
        return res;
    }

    public void dfs(TreeNode root){
   
        if(root == null) return ;
        res.add(root.val);				//先遍历根节点
        dfs(root.left);					//再遍历左子树
        dfs(root.right);				//再遍历右子树
    }
}

(2) 迭代写法

要把递归写法改成迭代写法,需要用到的一个很重要的数据结构:栈,用它来保存我们上一个结点,也就是记录我们从哪里来,这样在处理完某个结点的时候,我们可以通过栈来倒退回上一步,这就是迭代写法的核心。

代码如下:

class Solution {
   
    public List<Integer> preorderTraversal(TreeNode root) {
   
        List<Integer> res = new ArrayList<>();
        Stack
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值