题目:
剑指 Offer 55 - I. 二叉树的深度。
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
链接:https://leetcode-cn.com/leetbook/read/illustrate-lcof/xsaki2/
本题与主站 104 题相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
示例
例如:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
提示: 节点总数 <= 10000
思路:
由上图可以看出,二叉树的最大深度由左子树最大深度和右子树最大深度的最大值决定,最后将最大值加1返回结果。
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
时间复杂度O(n),空间复杂度O(1).