101.对称二叉树 python

news/2025/2/9 8:54:12/

对称二叉树

  • 题目
    • 题目描述
    • 示例 1:
    • 示例 2:
    • 提示:
  • 题解
    • 递归法
      • 步骤
      • 提交结果
    • 迭代法
      • 步骤
      • 提交结果

题目

题目描述

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

示例 1:

在这里插入图片描述

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

在这里插入图片描述

输入:root = [1,2,2,null,3,null,3]
输出:false

提示:

树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

题解

要检查一个二叉树是否轴对称,可以通过递归或迭代的方法来解决。这里我们将分别介绍这两种方法。

递归法

递归法的核心思想是比较树的左子树和右子树是否镜像对称。具体来说,对于每一层我们需要比较两个节点,并且这两个节点的子节点也需要满足镜像对称的关系。

步骤

  1. 定义一个辅助函数 isMirror 来判断两棵树是否互为镜像。
  2. isMirror 函数中,首先检查两个节点是否都为空;如果只有一个为空,则不对称;如果都不为空,则需要它们的值相等并且它们的子树也满足镜像关系。
  3. 使用根节点的左右子树作为初始参数调用 isMirror 函数。

以下是 Python 实现:

python">def isSymmetric(root: TreeNode) -> bool:def isMirror(t1: TreeNode, t2: TreeNode) -> bool:if not t1 and not t2: return Trueif not t1 or not t2: return Falsereturn (t1.val == t2.val) and isMirror(t1.right, t2.left) and isMirror(t1.left, t2.right)return isMirror(root, root)

提交结果

在这里插入图片描述

迭代法

迭代法使用队列来进行层次遍历。我们可以将两个需要比较的节点同时入队,然后逐个出队进行比较。

步骤

  1. 如果根节点为空,直接返回 True
  2. 初始化一个队列,将根节点的左右子节点加入队列。
  3. 每次从队列中取出两个节点进行比较,若两者均非空则进一步比较其值是否相等,并将其子节点(注意顺序:一个节点的左子节点与另一个节点的右子节点)依次加入队列。
  4. 若在任意时刻发现不匹配的情况,则返回 False

以下是 Python 实现:

python">def isSymmetric(root: TreeNode) -> bool:if not root:return Truequeue = deque([(root.left, root.right),])while queue:t1, t2 = queue.popleft()# 如果两个节点都是None,继续下一个节点if not t1 and not t2:continue# 如果其中一个节点是None,或者两个节点的值不同,返回Falseif not t1 or not t2 or t1.val != t2.val:return False# 将下一层的节点按照对称的方式加入队列queue.append((t1.left, t2.right))queue.append((t1.right, t2.left))return True

提交结果

在这里插入图片描述

通过上述两种方法,你可以有效地判断一棵二叉树是否轴对称。递归方法更加直观,而迭代方法则避免了潜在的栈溢出问题,尤其适用于深层嵌套的树结构。


http://www.ppmy.cn/news/1570543.html

相关文章

客户端脚本安全设置:如何保障您的Web应用免受攻击?

随着现代Web开发的不断发展&#xff0c;客户端脚本在增强用户互动和提升网站体验方面扮演着重要角色。然而&#xff0c;这些便利的背后也伴随着潜在的安全风险&#xff0c;恶意攻击者可能会利用这些漏洞进行攻击。因此&#xff0c;确保客户端脚本的安全至关重要。本文将带您了解…

Centos Ollama + Deepseek-r1+Chatbox运行环境搭建

Centos Ollama Deepseek-r1Chatbox运行环境搭建 内容介绍下载ollama在Ollama运行DeepSeek-r1模型使用chatbox连接ollama api 内容介绍 你好&#xff01; 这篇文章简单讲述一下如何在linux环境搭建 Ollama Deepseek-r1。并在本地安装的Chatbox中进行远程调用 下载ollama 登…

Android双屏异显Presentation接口使用说明

在点餐、收银、KTV等场景,对于双屏异显的需求是非常多的,首先可以节省硬件成本。而现在的智能板卡很多运行Android系统,从Android4.2开始支持WiFi Display(Miracast)功能后,就开始支持双屏异显Presentation这套应用层接口了,下面以Android5.1系统来说明这套接口的使用要…

【数据结构】_树与二叉树

目录 1.树的概念和结构 1.1 树的概念 1.2 树的相关概念 1.3 树的表示 2. 二叉树的概念与结构 2.1 概念 2.2 特殊二叉树 2.3 二叉树的性质 2.4 二叉树的存储结构 第一种&#xff1a;顺序存储结构 第二种&#xff1a;链式存储结构 1.树的概念和结构 1.1 树的概念 树是一…

软件工程导论三级项目报告--《软件工程》课程网站

《软件工程》课程网站 摘要 本文详细介绍了《软件工程》课程网站的设计与实现方案&#xff0c;包括可行性分析、需求分析、总体设计、详细设计、测试用例。首先&#xff0c;通过可行性分析从各方面确认了该工程的可实现性&#xff0c;接着需求分析明确了系统的目标用户群和功能…

java 读取sq3所有表数据到objectNode

1.实现效果&#xff1a;将sq3中所有表的所有字段读到objectNode 对象中&#xff0c;兼容后期表字段增删情况&#xff0c;数据组织形式如下图所示&#xff1a; 代码截图&#xff1a; 代码如下&#xff1a; package com.xxx.check.util;import java.sql.*; import java.util.Arr…

我个人对DeepSeek一些评价

DeepSeek是一款备受关注的国产AI模型&#xff0c;以下是我个人对其的详细评价&#xff1a; 一、核心优势 强大的推理能力&#xff1a;DeepSeek能够准确解答复杂的数学问题&#xff0c;并展示完整的思考过程&#xff0c;像一个优秀的老师在给用户讲解。这种推理能力在AI模型中…

机器学习数学基础:19.线性相关与线性无关

一、线性相关与线性无关的定义 &#xff08;一&#xff09;线性相关 想象我们有一组向量&#xff0c;就好比是一群有着不同“力量”和“方向”的小伙伴。给定的向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α 1​,α 2…