給定一棵二叉樹,求其最大深度(根節點到最遠葉子節點的最長路徑節點數)。
Queue<TreeNode> 存儲當前層節點;size 記錄當前層節點數,處理完一層 depth++;public class MaximumDepthofBinaryTree104 {
public int maxDepth(TreeNode root) {
if (root == null) return 0;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
int depth = 0;
while (!q.isEmpty()) {
int size = q.size();
for (int i = 0; i < size; i++) {
TreeNode node = q.poll();
if (node.left != null) q.offer(node.left);
if (node.right != null) q.offer(node.right);
}
depth++;
}
return depth;
}
}
public int maxDepth(TreeNode root) {
if (root == null) return 0;
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
遞歸簡潔但深度極大時棧溢出風險;BFS 迭代更穩健。