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

力扣热题100之对称二叉树

题目

给你一个二叉树的根节点 root , 检查它是否轴对称。
在这里插入图片描述

代码

方法一:递归

# 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 check(left,right):if left is None and right is None:return Trueif left is None or right is None:return Falseif left.val!=right.val:return Falseout=check(left.left,right.right)inner=check(left.right,right.left)return out and innerreturn check(root.left,root.right) if root else True

方法二:队迭代

这里用的两个队分别存放根节点的左右两个子树的节点,当然也可以只使用一个队

# 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:if root is None:return Truequeue1=deque([root.left])queue2=deque([root.right])while queue1 and queue2:n=len(queue1)for _ in range(n):node1=queue1.popleft()node2=queue2.popleft()if not node1 and not node2:continueif not node1 or not node2:return False               if node1.val != node2.val :return False            queue1.append(node1.left)queue1.append(node1.right)queue2.append(node2.right)queue2.append(node2.left)return True

只使用一个队的方法:

# 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:if root is None:return Truequeue=deque()        queue.append(root.left)queue.append(root.right)while queue:left=queue.popleft()right=queue.popleft()if not left and not right:continueif not left or not right:return Falseif left.val !=right.val:return Falsequeue.append(left.left)queue.append(right.right)queue.append(left.right)queue.append(right.left)return True
http://www.lqws.cn/news/76357.html

相关文章:

  • LeetCode 热题 100 394. 字符串解码
  • C#项目07-二维数组的随机创建
  • CppCon 2014 学习:Exception-Safe Coding
  • Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
  • Python----目标检测(训练YOLOV8网络)
  • FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复
  • 嵌入式鸿蒙开发环境搭建操作方法与实现
  • web架构3------(nginx的return跳转,gzip压缩,目录浏览,访问控制和location符号优先级)
  • 分布式锁剖析
  • 2025/6月最新Cursor(0.50.5版本)一键自动更换邮箱无限续杯教程
  • 05.MySQL表的约束
  • 牛客小白月赛117
  • Linux 权限管理入门:从基础到实践
  • OpenCV4.4.0下载及初步配置(Win11)
  • PCA(K-L变换)人脸识别(python实现)
  • 从【0-1的HTML】第1篇:HTML简介
  • C++ - 标准库之 <sstream> ostringstream(ostringstream 概述、基本使用、清空内容、进阶使用)
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块
  • 系统调用与程序接口的关系
  • [leetcode] 二分算法
  • 线程间和进程间是如何进行通信
  • day17 leetcode-hot100-34(链表13)
  • Oracle的Hint
  • 【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
  • (九)学生写作画像可视化
  • 【PhysUnits】15.9 引入P1后的右移运算(shr.rs)
  • Vue-4-前端框架Vue基础入门之Vue的常用操作
  • 二叉树的构建与逆构建/二叉查找树与替罪羊树
  • 安全态势感知中的告警误报思考
  • SDU棋界精灵——实现硬件程序ESP32的FreeRTOS任务