leetcode

题目

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例
给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。

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

思路

深度优先遍历,参数带一个层级level
用一个变量depth记录最大深度
遍历过程比较depth和level,更新depth

解题

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} root
  11. * @return {number}
  12. */
  13. var maxDepth = function(root) {
  14. if (root === null) 0
  15. let depth = 1
  16. const dfs = (root, level = 0) => {
  17. if (root === null) return
  18. depth = Math.max(depth, level + 1)
  19. dfs(root.left, level + 1)
  20. dfs(root.right, level + 1)
  21. }
  22. dfs(root)
  23. return depth
  24. };