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

【LeetCode101】对称二叉树

题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。

思路与算法

对称:左右子树互为镜像
这很显然暗示了一种递归方法

  1. 确定base case(s)

    • 如果 left 和 right 都是 None ,那么它们是镜像的(对称)
    • 如果其中一个是 None 而另一个不是,那么它们就不是对称的。
  2. 拆解问题与定义递归步骤

  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 isSymmetric(self, root: Optional[TreeNode]) -> bool:
        # 辅助函数
        def isMirror(left: TreeNode, right: TreeNode):
            if left is None and right is None:
                return True
            if left is None or right is None:
                return False
            return (left.val == right.val) and isMirror(left.left, right.right) and isMirror(left.right, right.left)

        if not root:
            return True
        return isMirror(root.left, root.right)

总结

相关文章:

  • 逐梦DBA:MySQL的编码设置
  • PWM子系统芯片驱动源码pwm-tegra.c分析
  • leetcode15 三数之和
  • ruoyi框架接入kkFileView
  • 侯捷 C++ 课程学习笔记:深入理解C++内存管理与类对象构造全过程
  • 【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
  • 第005文-模拟入侵网站实现0元购
  • µCOS-III从入门到精通 第八章(时间片调度)
  • 点云 基于法线的双边滤波原理和过程
  • LeetCode hot 100—二叉树的最大深度
  • 能量石[算法题]
  • YOLOv12 项目部署指南! 含报错解决
  • Flutter底层实现
  • Go学习笔记:基础语法3
  • 【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】
  • CSS+Html面试题(二)
  • python网络爬虫开发实战之爬虫基础
  • Unity自定义渲染管线(Scriptable Render Pipeline)架构设计与实现指南
  • netty中Future和ChannelHandler
  • Best practice-生产环境中加锁的最佳实践
  • 鸿蒙电脑正式发布,余承东:国产软件起步晚,基础弱,探索面向未来的电脑体验
  • AI创业者聊大模型应用趋势:可用性和用户需求是关键
  • 证监会披露两起操纵市场处罚结果,今年来涉操纵股票罚没金额超7.5亿元
  • C919上海虹桥-深圳航线开通,东航今年计划再接收10架C919
  • 广东高州发生山体滑坡,造成2人遇难4人送医救治1人失联
  • 俄需要达成怎样的特别军事行动结果?普京:包含四个方面