Algorithm/src/main/java/tree/MaxDepth.java
2025-06-30 16:55:09 +08:00

60 lines
1.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tree;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
/**
* 题目: 104. 二叉树的最大深度 (maxDepth)
* 描述:给定一个二叉树 root ,返回其最大深度。
* 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
* 链接https://leetcode.cn/problems/maximum-depth-of-binary-tree/
*/
//二刷会做
public class MaxDepth {
//递归
int dfs(TreeNode root){
if(root==null)
return 0;
return Integer.max(dfs(root.left),dfs(root.right))+1;
}
public int maxDepth1(TreeNode root) {
return dfs(root);
}
//bfs
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int depth = 0;
// 每次while循环处理一层节点
while (!queue.isEmpty()) {
int levelSize = queue.size(); // 当前层节点数量
// 遍历当前层所有节点
for (int i = 0; i < levelSize; i++) {
TreeNode node = queue.poll();
// 如果存在左子节点,则加入队列
if (node.left != null) {
queue.offer(node.left);
}
// 如果存在右子节点,则加入队列
if (node.right != null) {
queue.offer(node.right);
}
}
// 每处理完一层深度加1
depth++;
}
return depth;
}
}