1 问题描述
找出二叉树的最大深度
2 代码实现
非常简单的一个问题,根据二叉树的结构,我们可以知道二叉树的左右节点(如果有)也各是一棵二叉树,因此,二叉树的深度等于max[deep(left), deep(right)]+1
,只要知道这个原理,直接用递归实现就一点难度也没有了。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if root is None:
return 0
else:
if root.left is None:
deep_l = 1
else:
deep_l = self.maxDepth(root.left) + 1
if root.right is None:
deep_r = 1
else:
deep_r = self.maxDepth(root.right) + 1
return max(deep_l, deep_r)
时间复杂度为 O ( n ) O(n) O(n),每个节点只遍历一次;空间复杂度为 O ( h ) O(h) O(h)最差情况下需要调用堆栈次数为树的最大深度。