LeetCode Hot100刷题——对称二叉树

ops/2025/3/14 23:53:16/

101.对称二叉树

给你一个二叉树的根节点 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. 递归终止条件:
    1. 如果两个节点都为空,说明对称
    2. 如果一个节点为空一个节点不为空,说明不对称
  2. 递归比较:
    1. 当前节点的值必须相等
    2. 左子树的左节点和右子树的右节点必须对称
    3. 左子树的右节点和右子树的左节点必须对称

解决代码

java">/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {if(root == null){return true;}return checkSymmetric(root.left, root.right);}private boolean checkSymmetric(TreeNode left, TreeNode right){if(left == null && right == null){return true;}if(left == null || right == null){return false;}return (left.val == right.val) && checkSymmetric(left.left, right.right) && checkSymmetric(left.right, right.left);}
}

代码解释

  1. isSymmetric方法

    • 如果根节点为空,直接返回true

    • 调用辅助函数checkSymmetric检查左右子树是否对称。

  2. checkSymmetric方法

    • 终止条件:若左右节点均为空,对称;若只有一个为空,不对称。

    • 递归比较:比较当前节点值是否相等,并递归检查左子树的左节点与右子树的右节点,以及左子树的右节点与右子树的左节点是否对称。


http://www.ppmy.cn/ops/165794.html

相关文章

STM32全系大阅兵(2)

接前一篇文章:STM32全系大阅兵(1) 本文内容参考: STM32家族系列的区别_stm32各个系列区别-CSDN博客 STM32--STM32 微控制器详解-CSDN博客

《大语言模型》学习笔记(一)

一、什么是大语言模型 大语言模型是指在海量无标注文本数据上进行预训练得到的大型预训练语言模型&#xff0c;例如GPT-3&#xff0c;PaLM和LLaMA。大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是一种基于深度学习的自然语言处理模型&#xff0c;能…

modbusrtu.h:5:10: error: ‘QSerialPort‘ file not found

解决 QSerialPort 头文件未找到的问题: 1. 确保已安装 Qt Serial Port 模块 QSerialPort 属于 Qt Serial Port 模块,需先确认已安装该模块。 安装步骤: 打开 Qt Maintenance Tool: 在开始菜单搜索并打开 Qt Maintenance Tool 选择当前安装的 Qt 版本,点击 “添加或移除…

Elasticsearch 7.x入门学习-系统架构与工作流程

1 核心概念 1.1 索引&#xff08;Index&#xff09; Elasticsearch 索引的精髓&#xff1a;一切设计都是为了提高搜索的性能。 一个索引就是一个拥有相似特征的文档集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个…

第十五届蓝桥杯大学B组(握手问题、小球反弹、好数)

一、握手问题 思路1&#xff1a; 1)先让所有人相互握手 第一个人49次 第二个人48次 第五十个人0次 共计01249 2)减去7个没握手的 016 #include<stdio.h> int main() {int a 50*49/2 - 7*6/2;printf("%d\n",a);return 0; } 运行结果&#xf…

【QT】-解析打包json

在 Qt 中&#xff0c;接收到 JSON 字符串后&#xff0c;可以通过 QJsonDocument 来解析 JSON 数据&#xff0c;获取字段值。同时&#xff0c;可以使用 QJsonDocument 将数据打包成 JSON 字符串&#xff0c;然后发送到 RabbitMQ 或其他地方。这个方法在 Qt 中非常常见且稳定。 …

Chrome 扩展开发 API实战:Proxy(七)

1. 引言 在现代浏览器生态中&#xff0c;代理设置是提升网络访问速度、保障隐私安全的重要手段。对于开发者而言&#xff0c;掌握如何在 Chrome 扩展程序中配置代理功能&#xff0c;不仅能满足特定的网络需求&#xff0c;还能为用户提供更灵活的上网体验。本文将以通俗易懂的语…

探索移动端开发新可能: Android Termux环境下部署MariaDB数据库

文章目录 前言1. 安装MariaDB2. 安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 在这个数字时代&#xff0c;我们的智能手机早已突破了通话、发短信和刷社交媒体的界限。你知道吗&#xff1f;现在的智能机性能强大到足以支持我们进行…