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

相关文章:

  • 【leetcode】459.重复的子字符串
  • 【Hot 100】70. 爬楼梯
  • 面向对象进阶 | 深入探究 Java 静态成员与继承体系
  • 监督学习 vs 无监督学习:AI两大学习范式深度解析
  • 数学建模期末速成 最短路径
  • 如何提升大模型召回率和实战案例
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 由浅入深一文详解同余原理
  • 本科毕业论文总结
  • STM32 智能小车项目 L298N 电机驱动模块
  • C. Basketball Exercise
  • H3C 交换机基本命令详解
  • 功能结构整理
  • 关于人工智能指令
  • 优化WP外贸建站提升用户体验
  • C# 异常处理进阶:精准获取错误行号的通用方案
  • AIGC 基础篇 高等数学篇 01函数与极限
  • 使用Python进行函数作画
  • JavaSwing中使用JxBroser与JavaScript进行异步通信
  • 详解什么是call、apply、bind
  • 网站建设推广文案/游戏广告推广平台
  • 做饲料机械的网站/百度投诉电话客服24小时
  • 中型网站开发周期/保定seo网站推广
  • 欧美化妆品网站模板/专业推广引流团队
  • 给企业做网站 工作/关键词优化的作用
  • 怎么看一个网站是html5/百度公司地址