题目描述
给定一个二叉树 root,返回其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
解题思路
这是二叉树递归的入门题。最大深度等于 max(左子树深度, 右子树深度) + 1(当前节点本身算一层)。递归终止条件:空节点深度为 0。这个递归公式直接对应代码实现,非常简洁。也可以用 BFS(层序遍历)求解:每遍历完一层,深度加一,直到队列为空。
代码实现
python
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1复杂度分析
- 时间复杂度: O(n)
- 空间复杂度: O(h)