Leetcode 104. 二叉树的最大深度(Java-深度遍历)

题目描述:

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例:

复制代码
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

复制代码
输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

上代码,拿去即可运行:

java 复制代码
package onlyqi.daydayupgo07.suanfa;

import javafx.util.Pair;
import lombok.Data;

import java.util.ArrayDeque;
import java.util.Objects;
import java.util.Queue;
import java.util.Stack;

public class MaxTreeDep {
    public static void main(String[] args) {
        TreeNode treeNode1 = new TreeNode(3);
        TreeNode treeNode2 = new TreeNode(9);
        TreeNode treeNode3 = new TreeNode(20);
        TreeNode treeNode4 = new TreeNode(15);
        TreeNode treeNode5 = new TreeNode(7);
        TreeNode treeNode6 = new TreeNode(66);
        treeNode2.setRight(treeNode6);
        treeNode1.setLeft(treeNode2);
        treeNode1.setRight(treeNode3);
        treeNode3.setLeft(treeNode4);
        treeNode3.setRight(treeNode5);
        System.out.println(getMaxDep1(treeNode1));

    }

    // 广度优先遍历
    public static Integer getMaxDep1(TreeNode treeNode) {
        if (Objects.isNull(treeNode)) {
            return 0;
        }
        int maxDep = 1;
        Queue<Pair<TreeNode, Integer>> queue = new ArrayDeque<>();
        queue.offer(new Pair<>(treeNode, 1));
        TreeNode temNode = treeNode;
        while (!queue.isEmpty()) {
            Pair<TreeNode, Integer> nodeIntegerPair = queue.poll();
            maxDep = Math.max(nodeIntegerPair.getValue(), maxDep);
            Integer dep = nodeIntegerPair.getValue();
            temNode = nodeIntegerPair.getKey();
            System.out.println("==============:" + temNode.value);
            if (temNode.left != null) {
                queue.offer(new Pair<>(temNode.left, dep + 1));
            }
            if (temNode.right != null) {
                queue.offer(new Pair<>(temNode.right, dep + 1));
            }

        }

        return maxDep;
    }

    // 深度优先遍历
    public static Integer getMaxDep(TreeNode treeNode) {
        if (Objects.isNull(treeNode)) {
            return 0;
        }
        Stack<Pair<TreeNode, Integer>> stack = new Stack<>();
        stack.push(new Pair<>(treeNode, 1));
        int maxDepth = 0;
        while (!stack.isEmpty()) {
            Pair<TreeNode, Integer> current = stack.pop();
            TreeNode currentKey = current.getKey();
            Integer dep = current.getValue();
            maxDepth = Math.max(maxDepth, dep);
            System.out.println("==============:" + currentKey.value);

            if (!Objects.isNull(currentKey.right)) {
                stack.push(new Pair<>(currentKey.right, dep + 1));
            }
            if (!Objects.isNull(currentKey.left)) {
                stack.push(new Pair<>(currentKey.left, dep + 1));
            }
        }
        return maxDepth;
    }
}

@Data
class TreeNode {
    int value;
    TreeNode left;
    TreeNode right;

    public TreeNode(int value) {
        this.value = value;
    }
}

运行结果:

慢慢来才是最快的方法--天涯明月 共勉

我要刷300道算法题,第138道 。 希望自己可以坚持下去 。

相关推荐
小羊在睡觉3 小时前
力扣84. 柱状图中最大的矩形
后端·算法·leetcode·golang·go
3DVisionary3 小时前
蓝光三维扫描:医疗制造的精度焦虑怎么解
人工智能·算法·制造·蓝光三维扫描·医疗制造·三维检测·义齿检测
好评笔记3 小时前
机器学习面试八股——常用损失函数
人工智能·深度学习·算法·机器学习·校招
weixin_468466853 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
sheeta19983 小时前
LeetCode 每日一题笔记 日期:2026.05.29 题目:3300. 最小元素
笔记·leetcode
_日拱一卒3 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先
珂朵莉MM4 小时前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--束搜索
人工智能·算法
Omics Pro5 小时前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言
voidmort5 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
人道领域5 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法