当前位置: 首页 > 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.xdnf.cn/news/769411.html

相关文章:

  • flutter开发安卓APP适配不同尺寸的手机屏幕
  • 题目 3225: 蓝桥杯2024年第十五届省赛真题-回文字符串
  • windows11安装编译QtMvvm
  • github 2FA双重认证丢失解决
  • 《操作系统真相还原》——中断
  • AIOps智能运维体系中Python故障预测与根因分析的应用实践
  • EXSI通过笔记本wifi上外网配置
  • Python编程基础(三) | 操作列表
  • 家政维修平台实战12搭建服务详情功能
  • 微型导轨在手术机器人领域中有哪些关键操作?
  • 现代语言模型中的分词算法全解:从基础到高级
  • 1.文件操作相关的库
  • Windows采用npx方式本地部署n8n
  • C#文件压缩与解压缩全攻略:使用ZipFile与ZipArchive实现高效操作
  • `docker run`、`docker start`、`docker exec` 区别
  • 天机学堂-分页查询
  • CodeTop一刷
  • HarmonyOS5 仓颉入门:和 ArkTs 互操作
  • 天机学堂(初始项目)
  • 2024年第十五届蓝桥杯Scratch10月stema选拔赛真题——数字卡片排序
  • 解锁设计师创意魔法:Onlook赋能你的Web创作
  • DAY 40 超大力王爱学Python
  • 20250602在荣品的PRO-RK3566开发板的Android13下打开HDMI显示
  • 深入解析 Python 字符串方法:从基础到高级应用
  • 打开一个新的Maven工程要做的事情
  • (12)-java+ selenium->元素定位大法之By_link_text
  • 吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py
  • InlineHook的原理与做法
  • 每天掌握一个Linux命令 - hping3
  • deepseek问答记录:请讲解一下transformers.HfArgumentParser()