当前位置: 首页 > article >正文

力扣 LeetCode 94. 二叉树的中序遍历(Day6:二叉树)

解题思路:

方法一:递归(左中右)

class Solution {
    List<Integer> res = new ArrayList<>();

    public List<Integer> inorderTraversal(TreeNode root) {
        recur(root);
        return res;
    }

    public void recur(TreeNode root) {
        if (root == null) return;
        recur(root.left);
        res.add(root.val);
        recur(root.right);
    }
}

方法二:迭代(非递归法)

前中后序迭代法都是使用栈

前序和后序使用类似的方法

中序方法不同与前序和后序,需要单独区分

 cur != null 时,首先 cur = cur.left 遍历到底进行栈push

为空时,回到上一个不为空的位置并弹出该值,继续 cur = cur.left 遍历该值右边的位置

注意while循环条件

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        Deque<TreeNode> stack = new ArrayDeque<>();
        List<Integer> res = new ArrayList<>();
        if (root == null) return res;

        TreeNode cur = root;
        while (cur != null || !stack.isEmpty()) {
            if (cur != null) {
                stack.push(cur);
                cur = cur.left;
            } else {
                cur = stack.pop();
                res.add(cur.val);
                cur = cur.right;
            }
        }
        return res;
    }
}


http://www.kler.cn/a/399463.html

相关文章:

  • 构建SSH僵尸网络
  • Ubuntu22.04 安装mysql8 无法修改端口及配置的问题 坑啊~~~~
  • 华为HCIP——MSTP/RSTP与STP的兼容性
  • 前端开发设计模式——责任链模式
  • 深入理解 SQL_MODE 之 ANSI_QUOTES
  • 第 17 章 - Go语言 上下文( Context )
  • 【SPIE出版,EI稳定检索】2024年信号处理与神经网络应用国际学术会议(SPNNA 2024,12月13-15日)
  • ES6进阶知识二
  • 2024山西省网络建设运维第十八届职业院校技能大赛解析答案(6. iscsi 服务)
  • pybullet简介及简单使用
  • lambda 表达式与mutable
  • 【Golang】——Gin 框架中的模板渲染详解
  • 省级金融发展水平数据(2000-2022年)
  • hive中windows子句的使用
  • UEFI学习笔记(十六):edk2子目录常用驱动介绍
  • Redis 内存管理
  • UNIX网络编程-TCP套接字编程(实战)
  • Amazon Web Services (AWS)
  • Linux第四讲:Git gdb
  • 数学建模问题攻略指南
  • XXL-JOB相关面试题
  • 【第四课】rust声明式宏理解与实战
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析
  • 算法——有序数组的平方(leetcode977)
  • 力扣第 55 题 跳跃游戏
  • 大语言模型通用能力排行榜(2024年11月8日更新)