目录
题目
- 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:3
示例 2:
输入:root = [1,null,2]
输出:2
法一、后序遍历
- 后序遍历+递归实现:此树的深度 等于 左子树的深度 与 右子树的深度中的 最大值+1
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root: return 0 #终止条件: 当 root 为空,说明已越过叶节点,因此返回 深度0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
法二、层序遍历
- 每遍历一层,则计数器 +1 ,直到遍历完成,则可得到树的深度。
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root: return 0 #当 root 为空,直接返回 深度0
queue, res = [root], 0 #初始化队列(加入根节点root),计数器res=0
while queue:#当队列不空时执行:
tmp = [] #初始化一个空列表 tmp ,用于临时存储下一层节点。
for node in queue: #遍历 queue 中的各节点 node
if node.left: tmp.append(node.left) #左子节点加入 tmp
if node.right: tmp.append(node.right) #右子节点加入 tmp
queue = tmp #将下一层节点赋值给 queue
res += 1 #层数加 1
return res
标签:tmp,node,遍历,queue,二叉树,深度,root,节点,104
From: https://www.cnblogs.com/lushuang55/p/17800935.html