刷题笔记树Leetcode104.二叉树的最大深度
赵海波给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
1 2
| 输入:root = [3,9,20,null,null,15,7] 输出:3
|
示例 2:
1 2
| 输入:root = [1,null,2] 输出:2
|
提示:
- 树中节点的数量在
[0, 104]
区间内。
-100 <= Node.val <= 100
解法:递归
1 2 3 4 5 6 7 8 9
| class Solution { public int maxDepth(TreeNode root) { if (root == null)return 0; int leftDepth = maxDepth(root.left); int rightDepth = maxDepth(root.right);
return Math.max(leftDepth,rightDepth) + 1; } }
|
解法:迭代(广度优先搜索)
每一次迭代都删去上一层的所有节点,并且保存下一层的所有节点。这样每次迭代都代表深度增加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int maxDepth(TreeNode root) { if (root == null)return 0; LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); int depth = 0; queue.offer(root);
while(!queue.isEmpty()){ int size = queue.size(); while (size > 0){ TreeNode node = queue.poll(); if (node.left != null)queue.offer(node.left); if (node.right != null)queue.offer(node.right); size --; } depth += 1; } return depth;
} }
|