本文正在参与掘金团队号上线活动,点击 查看大厂春招职位
一、题目描述
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度3 。
二、思路分析
1.树的总深度 = max(左子树深度,右子树深度) + 当前节点所在的一层深度。
2.左子树深度 = max(左子树的左子树深度,左子树的右子树深度) + 当前节点所在的一层深度。
3.右子树深度 = max(右子树的左子树深度,右子树的右子树深度) + 当前节点所在的一层深度。
4.递归,直到节点为null。
三、AC 代码
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
l = self.maxDepth(root.left)
r = self.maxDepth(root.right)
return max(l,r) + 1
输出为:
四、总结
该题是一道利用深度优先搜索(DFS)实现代码的题。从这道题体会到,理论很简单,思路需打开。