94.二叉树的中序遍历

一、递归

java 复制代码
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new Arraylist <> ();//结果列表
        Stack<TreeNode> stack =new Stack <> (); //栈
        TreeNode cur = root ; //指向当前节点
        while (cur! = null ||!stack.isEmpty() ){
            if (cur !=null) {
                stack.push(cur);
                cur = cur.left;// 指向左子树
            }
        else {
            cur = stack.pop();//当前节点为空说明已经到最左侧 弹出上一个根节点
            list.add(cur.val);//添加到结果list中
            cur = cur.right;//指向右子树 
        }
        }
        return list ;
    }
}

二、遍历

java 复制代码
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList <Integer> ();
        inorder (root , res);
        return res ;
    }
    public void inorder(TreeNode root ,List<Integer> res){
        if (root == null){
            return ;
        }
        inorder(root.left , res);
        res.add(root.val);
        inorder(root.right ,res);

    }

}
相关推荐
云原生指北3 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
Leinwin7 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦7 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士8 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
罗超驿8 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
盐水冰9 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
凸头9 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun3141599 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
努力也学不会java9 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
攒了一袋星辰9 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql