当前位置: 首页 > news >正文

力扣刷题(第二十三天)

灵感来源 

- 保持更新,努力学习

- python脚本学习

平衡二叉树

解题思路

解题思路

  1. 递归计算高度:通过后序遍历递归计算每个节点的左右子树高度。
  2. 检查平衡性:在计算高度的同时,检查每个节点的左右子树高度差是否超过 1。如果超过 1,则标记该树为不平衡。
  3. 提前终止:一旦发现某个子树不平衡,立即返回结果,避免不必要的计算。
    # 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:def check_height(node):if node is None:return 0# 递归计算左子树高度left_height = check_height(node.left)if left_height == -1:return -1# 递归计算右子树高度right_height = check_height(node.right)if right_height == -1:return -1# 检查当前节点是否平衡if abs(left_height - right_height) > 1:return -1# 返回当前节点的高度return max(left_height, right_height) + 1return check_height(root) != -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 isBalanced(self, root: Optional[TreeNode]) -> bool:# 辅助函数:检查树的高度并判断是否平衡# 如果树平衡,返回树的高度;如果不平衡,返回-1def check_height(node):# 空节点的高度为0if node is None:return 0# 递归计算左子树的高度# 如果左子树不平衡,直接返回-1left_height = check_height(node.left)if left_height == -1:return -1# 递归计算右子树的高度# 如果右子树不平衡,直接返回-1right_height = check_height(node.right)if right_height == -1:return -1# 检查当前节点的左右子树高度差是否超过1# 如果超过1,说明当前节点不平衡,返回-1if abs(left_height - right_height) > 1:return -1# 如果当前节点平衡,返回其高度(左右子树高度的最大值加1)return max(left_height, right_height) + 1# 调用辅助函数,如果返回值不为-1,则树是平衡的return check_height(root) != -1
http://www.xdnf.cn/news/393643.html

相关文章:

  • LLMs之MCP:2025年5月2日,Anthropic 宣布 Claude 重大更新:集成功能上线,研究能力大幅提升
  • 关于在使用getOutputStream()方法后续没有用到write()
  • 普通IT的股票交易成长史--20250511 美元与美股强相关性
  • 微服务架构中如何保证服务间通讯的安全
  • 实践官方的 A2A SDK Python
  • 理解c++中explicit关键字的作用
  • Ai学习之LLM
  • python-Pandas库详细教程
  • C++蓝桥杯真题(题目+解析+流程图)(特殊运算符+四叶玫瑰数+质因数的个数+最大的矩形纸片+数字游戏+活动人数)
  • ADC接口
  • 职场心得总结(1)-如何获得晋升
  • Java快速上手之实验七
  • 2025-05-11 Unity 网络基础11——UnityWebRequest 使用
  • 【数据结构】前言
  • JVM内存结构有哪些?HashMap和HashTable的区别?
  • 编程技能:字符串函数02,strcpy
  • 解决SSH连接华为云服务器ESC经常性断连问题
  • 数据结构实验9.1:静态查找表的基本操作
  • C++:template(函数模板)
  • GitLab搭建与使用(SSH和Docker)两种方式
  • [学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
  • HTTP 错误状态码以及常用解决方案
  • C++进阶--使用红黑树封装map和set
  • 原型链与继承机制:继承背后的秘密
  • Baklib内容中台的核心架构是什么?
  • 蓝桥杯14届国赛 班级活动
  • 反向代理对于 网络安全中服务器的一些思考
  • MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
  • JS | 正则 · 常用正则表达式速查表
  • Go语言——kratos微服务框架使用