跳转至

104. 二叉树的最大深度

题目

给定一个二叉树 root ,返回其最大深度。

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

示例 1:

输入:root = [3,9,20,null,null,15,7]

输出:3

示例 2:

输入:root = [1,null,2]

输出:2

思路

树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(BFS)。

  • 常见 DFS : 先序遍历、中序遍历、后序遍历。
  • 常见 BFS : 层序遍历(即按层遍历)。

此题使用后序遍历(DFS)

  • 树的深度 等于 左子树的深度右子树的深度 中的 最大值 +1。

复杂度

  • 时间复杂度:\(O(n)\),其中 \(n\) 为二叉树的节点个数。
  • 空间复杂度:\(O(n)\),最坏情况下,二叉树退化成一条链,递归需要 \(O(n)\) 的栈空间。

题解

Go
func maxDepth(root *TreeNode) int {
    if root == nil {
        return 0
    }

    return 1 + max(maxDepth(root.Left), maxDepth(root.Right))
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}
Python
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))