【刷题笔记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);
    }
}
相关推荐
little redcap13 分钟前
第十九次CCF计算机软件能力认证-乔乔和牛牛逛超市
数据结构·c++·算法
Dola_Pan16 分钟前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
wang_book19 分钟前
Gitlab学习(007 gitlab项目操作)
java·运维·git·学习·spring·gitlab
muyierfly1 小时前
34.贪心算法1
算法·贪心算法
蜗牛^^O^1 小时前
Docker和K8S
java·docker·kubernetes
从心归零2 小时前
sshj使用代理连接服务器
java·服务器·sshj
IT毕设梦工厂3 小时前
计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
luthane3 小时前
python 实现average mean平均数算法
开发语言·python·算法
静心问道3 小时前
WGAN算法
深度学习·算法·机器学习
Ylucius3 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
java·c语言·javascript·c++·python·学习