题目
给定一个二叉树,找出其最大深度。
难度:★★☆☆☆
类型:二叉树
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
解答
方案1:递归法
递归法通过遍历所有结点寻找最大深度,时间复杂度为N。我们编写函数,确定以root为根结点的一棵树的最大深度这样:
如果根结点root为空,则直接返回0;
如果不为空,则是左子树的最大深度d1和右子树的最大深度d2中较大的值加1。
左子树或右子树的最大深度可以通过调用本函数确定。
具体这样实现:
class Solution:
"""
递归法
"""
def maxDepth(self, root):
def max_depth(root): # 计算以root为根节点的二叉树的最大深度
if not root:
return 0
max_left = max_depth(root.left) # 左子树最大深度
max_right = max_depth(root.right) # 右子树最大深度
return max(max_left, max_right) + 1 # 加上根节点