leedcode 二叉树的最大深度
迭代法:
class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: queue=[root] if not root: return 0 depth=0 while queue: level_len = len(queue)#第k层存在的节点数 for i in range(level_len):#找出第k+1层存在的节点数 cur_node=queue.pop(0) #一轮循环把这一层全部出栈 顺便把下一层全部堆栈 if cur_node.left: queue.append(cur_node.left) if cur_node.right: queue.append(cur_node.right) depth+=1 return depth
递归法:
class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int:#递归的两大要素 if not root:#终止条件 return 0 return max(self.maxDepth(root.left),self.maxDepth(root.right))+1#重复问题
class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: # 终止条件 if not root: return 0 # 重复问题:计算左子树的最大深度 left_depth = self.maxDepth(root.left) # 重复问题:计算右子树的最大深度 right_depth = self.maxDepth(root.right) # 返回当前节点的深度(左右子树的较大深度 + 1) return max(left_depth, right_depth) + 1

浙公网安备 33010602011771号