Marvel-Site Marvel-Site
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

Marvel

吾必当乘此羽葆盖车
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • Java

  • 计算机基础

    • 数据结构与算法

      • 算法复杂度
      • 排序算法
      • 背包问题
      • 二叉树
        • 二叉树概念
        • 二叉树遍历
          • 前序遍历
          • 中序遍历
          • 后续遍历
      • 红黑树
      • 并查集
      • 最小生成树算法
      • 最短路径算法
    • 计算机网络

    • 操作系统

    • Linux

  • 框架|中间件

  • 架构

  • 后端
  • 计算机基础
  • 数据结构与算法
Marvel
2024-05-12
目录

二叉树

# 二叉树

提示

草稿

# 二叉树概念

# 二叉树遍历

  • 前序遍历:根 -> 左 -> 右
  • 中序遍历:左 -> 根 -> 右
  • 后续遍历:左 -> 右 -> 根

# 前序遍历

递归

public void preorderTraversal(TreeNode root) {
    if (root == null) return;
    System.out.print(root.val + " ");
    dfs(list, root.left);
    dfs(list, root.right);
}
1
2
3
4
5
6

迭代

public void preorderTraversal(TreeNode root) {
    List<Integer> list = new ArrayList<>();
    Deque<TreeNode> stack = new LinkedList<>();
    while (!stack.isEmpty() || root != null) {
        while (root != null) {
            System.out.print(root.val + " ");
            stack.push(root);
            root = root.left;
        }
        root = stack.pop();
        root = root.right;
    }
    return list;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 中序遍历

递归

public void inorderTraversal(TreeNode root) {
    if (root == null) return;
    dfs(list, root.left);
    System.out.print(root.val + " ");
    dfs(list, root.right);
}
1
2
3
4
5
6

迭代

public void inorderTraversal(TreeNode root) {
    List<Integer> list = new ArrayList<>();
    Deque<TreeNode> stack = new LinkedList<>();
    while (!stack.isEmpty() || root != null) {
        while (root != null) {
            stack.push(root);
            root = root.left;
        }
        root = stack.pop();
        System.out.print(root.val + " ");
        root = root.right;
    }
    return list;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 后续遍历

递归

public void postorderTraversal(TreeNode root) {
    if (root == null) return;
    dfs(list, root.left);
    dfs(list, root.right);
    System.out.print(root.val + " ");
}
1
2
3
4
5
6

迭代

public void postorderTraversal(TreeNode root) {
    List<Integer> list = new ArrayList<>();
    Deque<TreeNode> stack = new LinkedList<>();

    TreeNode prev = null;
    while (!stack.isEmpty() || root != null) {
        while (root != null) {
            stack.push(root);
            root = root.left;
        }
        root = stack.pop();
        if (root.right == null || root.right == prev) {
            System.out.print(root.val + " ");
            prev = root;
            root = null;
        } else {
            stack.push(root);
            root = root.right;
        }
    }
    return list;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
编辑 (opens new window)
上次更新: 2024/05/12, 22:10:12
背包问题
红黑树

← 背包问题 红黑树→

最近更新
01
位运算
05-21
02
Spring三级缓存解决循环依赖
03-25
03
ReentrantLock非公平锁的源码分析
02-19
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Marvel
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式