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 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; } }