Featured image of post 剑指 Offer 55 - I. 二叉树的深度

剑指 Offer 55 - I. 二叉树的深度

题目描述

输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

例如:

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

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

提示:

  1. 节点总数 <= 10000

注意:本题与主站 104 题相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

解法一:递归

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func max(nums ...int) int {
    res := nums[0]
    for _, val := range nums {
        if val > res {
            res = val
        }
    }
    return res
}

func maxDepth(root *TreeNode) int {
    if nil == root {
        return 0
    }
    return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
}

解法二:BFS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func maxDepth(root *TreeNode) int {
    if nil == root {
        return 0
    }

    var queue []*TreeNode
    queue = append(queue, root)
    ans := 0
    for len(queue) > 0 {
        cnt := len(queue)
        for cnt > 0 {
            cur := queue[0]
            queue = queue[1:]
            if cur.Left != nil {
                queue = append(queue, cur.Left)
            }
            if cur.Right != nil {
                queue = append(queue, cur.Right)
            }
            cnt--
        }
        ans++
    }
    return ans
}
Licensed under CC BY-NC-SA 4.0
最后更新于 2023/06/17 22:21:08
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计