【刷题笔记8.11】LeetCode题目:二叉树中序遍历、前序遍历、后序遍历

LeetCode题目:二叉树中序遍历、前序遍历、后序遍历

题目1:二叉树中序遍历

(一)题目描述

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

(二)分析

二叉树中序遍历,遍历顺序:左节点 -》 根节点 -》 右节点

注意:二叉树的前、中、后序遍历就是以根为基准,前序遍历根在最前面,中序遍历根在中间,后序遍历根在最后面

(三)具体代码如下

这题没啥意思,咱使用递归方式,直接背下来最快

java 复制代码
public class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
    	//创建一个集合,用于接收返回结果
        List<Integer> result = new ArrayList<>();
        inorder(root, result);
        return result;
    }

    public void inorder(TreeNode root, List<Integer> list) {
        if (root == null) {
            //在void修饰的方法中,return;相当于return null;(实际上编译后的字节码是相同的),并且在void的方法中只能使用return,使用return null会报错。
            return;
        }

        //中序遍历(左------》根------》右)
        inorder(root.left, list);
        list.add(root.val);
        inorder(root.right, list);
    }
}

题目2:二叉树的前序遍历

(一)题目描述

描述

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

数据范围:二叉树的节点数量满足

1≤n≤100 ,二叉树节点的值满足

1≤val≤100 ,树的各节点的值各不相同

(二)分析

二叉树前序遍历:根节点 -》 左节点 -》右节点

(三)代码实现

java 复制代码
public class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
    	//创建一个集合,用于接收返回结果
        List<Integer> result = new ArrayList<>();
        preorder(root, result);
        return result;
    }

    public void preorder(TreeNode root, List<Integer> list) {
        if (root == null) {
            //在void修饰的方法中,return;相当于return null;(实际上编译后的字节码是相同的),并且在void的方法中只能使用return,使用return null会报错。
            return;
        }

        //前序遍历(根------》左------》右)
        list.add(root.val);
        preorder(root.left, list);
        preorder(root.right, list);
    }
}

题目3:二叉树后序遍历

(一)题目描述

分析

二叉树后序遍历:左节点 -》 右节点 -》根节点

代码实现

java 复制代码
public class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
    	//创建一个集合,用于接收返回结果
        List<Integer> result = new ArrayList<>();
        postorder(root, result);
        return result;
    }

    public void postorder(TreeNode root, List<Integer> list) {
        if (root == null) {
            //在void修饰的方法中,return;相当于return null;(实际上编译后的字节码是相同的),并且在void的方法中只能使用return,使用return null会报错。
            return;
        }

        //后序遍历(左------》右------》根)

        postorder(root.left, list);
        postorder(root.right, list);
        list.add(root.val);
    }
}
相关推荐
渣哥3 分钟前
Java ThreadPoolExecutor 动态调整核心线程数:方法与注意事项
java
Jasmine_llq11 分钟前
《P3825 [NOI2017] 游戏》
算法·游戏·枚举法·2-sat 算法·tarjan 算法·邻接表存储
Miraitowa_cheems14 分钟前
LeetCode算法日记 - Day 38: 二叉树的锯齿形层序遍历、二叉树最大宽度
java·linux·运维·算法·leetcode·链表·职场和发展
wangzy198215 分钟前
图形基础算法:如何将点与带曲线边的多边形位置关系算法做稳定
算法
稻草猫.35 分钟前
Java多线程(一)
java·后端·java-ee·idea
艾醒35 分钟前
探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
人工智能·深度学习·算法
躲在云朵里`38 分钟前
Spring Scheduler定时任务实战:从零掌握任务调度
java·数据库·mybatis
Java中文社群1 小时前
炸裂:SpringAI新版发布,终于支持断线重连了!
java·后端·ai编程
艾醒1 小时前
探索大语言模型(LLM):Open-WebUI的安装
人工智能·算法·全栈
哈喽姥爷1 小时前
Spring Boot--Bean的扫描和注册
java·spring boot·后端·bean的扫描和注册