当前位置:   article > 正文

104. 二叉树的最大深度(深度优先)

104. 二叉树的最大深度

力扣

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

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

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

示例:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。

解题思路

求最大深度,考虑使用深度优先遍历

在深度优先遍历过程中,记录每个节点所在的层级,找出最大的层级即可。

解题步骤

新建一个变量,记录最大深度。

深度优先遍历整颗树,并记录每个节点的层级,同时不断刷新最大深度这个变量。

遍历结束返回最大深度这个变量。

1

  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. 求最大深度,考虑使用深度优先遍历。
  14. 在深度优先遍历过程中,记录每个节点所在的层级,找出最大的层级即可。
  15. 解题步骤
  16. 新建一个变量,记录最大深度。
  17. 深度优先遍历整颗树,并记录每个节点的层级,同时不断刷新最大深度这个变量。
  18. 遍历结束返回最大深度这个变量。
  19. */
  20. var maxDepth = function(root) {
  21. let res = 0
  22. function dfs(root, l) {
  23. if(!root) return
  24. if(!root.left && !root.right) {
  25. res = Math.max(res, l)
  26. }
  27. dfs(root.left, l+1)
  28. dfs(root.right, l+1)
  29. }
  30. dfs(root, 1)
  31. return res
  32. };

2

  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) {
  15. return 0
  16. }
  17. return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
  18. };

1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/681265
推荐阅读
相关标签
  

闽ICP备14008679号