leedcode 平衡二叉树
对称二叉树走不通 201 / 228 个通过的测试用例
class Solution: def isBalanced(self, root: Optional[TreeNode]) -> bool: queue=[root] if not root: return True if not root.left and not root.right: return True if not root.left or not root.right: if root.right: if root.right.right or root.right.left: return False if not root.right.right: return True if root.left: if root.left.left or root.left.right: return False if not root.left.left: return True max_depth=0 while queue: level_len=len(queue) for i in range(level_len): cur_node=queue.pop(0) if cur_node.left: queue.append(cur_node.left) if cur_node.right: queue.append(cur_node.right) max_depth+=1 queue = [root] min_depth = 0 while queue: level_len = len(queue) for i in range(level_len): cur_node = queue.pop(0) if not cur_node.left and not cur_node.right: queue=[] break if cur_node.left: queue.append(cur_node.left) if cur_node.right: queue.append(cur_node.right) min_depth += 1 print(max_depth,min_depth) if max_depth-min_depth<=1: return True else: return False
改进后的:
# 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 isBalanced(self, root: Optional[TreeNode]) -> bool: queue=[root] if not root: return True while queue: cur_node=queue.pop(0) #对左树的处理 if cur_node.left:#如果指定节点的左节点存在 left_height=self.cal_depth(cur_node.left)#计算左树的深度 queue.append(cur_node.left)#并把指定节点的放入队列 if not cur_node.left:#如果指定节点的左节点不存在 默认左树深度为0 left_height=0 #对右树的处理 if cur_node.right: right_height=self.cal_depth(cur_node.right) queue.append(cur_node.right) if not cur_node.right: right_height=0 #如果深度差的绝对值大于1 则返回假并退出 if abs(left_height-right_height)>1: return False return True def cal_depth(self,root):#计算指定节点的最大深度 if not root: return 0 queue=[root] depth=0 while queue: level_len=len(queue)#计算一层存在节点的个数 #把下一层存在的节点加入队列 for i in range(level_len): 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
分类:
leedcode刷题记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)