当前位置: 首页 > 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)

总结

http://www.dtcms.com/a/53991.html

相关文章:

  • 逐梦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-生产环境中加锁的最佳实践
  • Anaconda 部署 DeepSeek
  • Java 大视界 -- Java 大数据在智能政务公共服务资源优化配置中的应用(118)
  • Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴
  • 深入解析“Elaborate”——从详细阐述到精心制作的多重含义
  • 绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • LLM-初识AI
  • 自律linux 第 35 天
  • 【C++】数据结构 双链表的实现(企业存储用户数据的实现)
  • Windows逆向工程入门之MASM 数据寻址
  • GTID模块初始化简介和参数binlog_gtid_simple_recovery