LeetCode94 二叉树的中遍历

  1. 题目

    java 复制代码
    给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
  2. 示例

    java 复制代码
    示例 1
    输入:root = [1,null,2,3]
    输出:[1,3,2]
    
    示例 2:
    输入:root = []
    输出:[]
    
    示例 3:
    输入:root = [1]
    输出:[1]
  3. 解题思路

    1. 方法一:递归。
    2. 方法二:循环。
      1. 使用栈保存根节点。
      2. 每次从栈中取出当前根节点,并将其左右子节点,加入栈中。
  4. 代码(Java)

    java 复制代码
     // 方法一
    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> res = new ArrayList<>();
            midTrav(res, root);
            return res;
        }
        public Integer midTrav(List<Integer> res, TreeNode root) {
            if (root != null) {
                Integer left = midTrav(res, root.left);
                if (left != null) {
                    res.add(left);
                }
                res.add(root.val);
                Integer right = midTrav(res, root.right);
                if (right != null) {
                    res.add(right);
                }
            }
            return null;
        }
    }
    java 复制代码
    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> res = new ArrayList<>();
            if (root == null) {
                return res;
            }
            Stack<TreeNode> stack = new Stack<TreeNode>();
            while (root != null || !stack.isEmpty()) {
                if (root != null) {
                    stack.push(root);
                    root = root.left;
                } else {
                    root = stack.pop();
                    res.add(root.val);
                    root = root.right;
                }
            }
            return res;
        }
    }
相关推荐
NorburyL2 小时前
DPO笔记
深度学习·算法
老纪的技术唠嗑局2 小时前
深度解析 LLM Wiki / Obsidian-Wiki / GBrain:Agent 时代知识的“自组织”与“自进化”
大数据·数据库·人工智能·算法
YXXY3135 小时前
模拟算法的介绍
算法
happymaker06265 小时前
简单LRU的实现(基于LinkedHashMap)
算法·leetcode·lru
会编程的土豆5 小时前
【数据结构与算法】空间复杂度从入门到面试:不仅会算,还要会解释
数据结构·c++·算法·面试·职场和发展
普通网友5 小时前
《算法面试必刷:15 个高频 LeetCode 题(附代码)》
算法·leetcode·面试
_深海凉_5 小时前
LeetCode热题100-搜索二维矩阵
算法·leetcode·矩阵
张槊哲5 小时前
C++ 进阶指南:如何丝滑地理解与实践多线程与多进程
开发语言·c++·算法
代码中介商6 小时前
C语言链表完全指南:从单节点到链表管理
c语言·算法·链表
小小de风呀6 小时前
de风——【从零开始学C++】(四):类和对象(下)
开发语言·c++·算法