题目

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Note: A leaf is a node with no children.

Example:

Given binary tree [3,9,20,null,null,15,7],

  1. 3
  2. / \
  3. 9 20
  4. / \
  5. 15 7

return its depth = 3.


题意

求二叉树的最大深度。

思路

DFS或者BFS。


代码实现

Java

DFS

  1. class Solution {
  2. public int maxDepth(TreeNode root) {
  3. return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
  4. }
  5. }

BFS

  1. class Solution {
  2. public int maxDepth(TreeNode root) {
  3. Queue<TreeNode> q = new ArrayDeque<>();
  4. int depth = 0;
  5. if (root != null) {
  6. q.offer(root);
  7. }
  8. while (!q.isEmpty()) {
  9. depth++;
  10. int size = q.size();
  11. for (int i = 0; i < size; i++) {
  12. TreeNode cur = q.poll();
  13. if (cur.left != null) q.offer(cur.left);
  14. if (cur.right!=null) q.offer(cur.right);
  15. }
  16. }
  17. return depth;
  18. }
  19. }

JavaScript

  1. /**
  2. * @param {TreeNode} root
  3. * @return {number}
  4. */
  5. var maxDepth = function (root) {
  6. return root ? Math.max(maxDepth(root.left), maxDepth(root.right)) + 1 : 0
  7. }