leetcode101. 对称二叉树

LeetCode101对称二叉树 算法特点及适用场景特点利用递归的思想巧妙地将判断二叉树是否对称的问题转化为比较对应子树是否对称相等的子问题,代码结构清晰简洁,逻辑上很符合二叉树这种具有递归结构的数据结构特点,易于理解和实现。通过层层递归比较节点值以及子树的对称性,能够准确地判断二叉树是否满足对称的性质。时间复杂度为 $O (n)`,在遍历二叉树节点判断对称性方面具有合理的效率表现,只要二叉树的节点数量在可接受范围内,都能较快地得出二叉树是否对称的结论。适用场景。 阅读详情

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1
   / \
  2   2
 / \ / \
3  4 4  3

 

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1
   / \
  2   2
   \   \
   3    3

 

进阶:

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

对称二叉树的左子树的前序遍历等于右子树的后序遍历的逆

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        bli = [] # 用来存储左子树的前序遍历
        fli = [] # 用来存储右子树的后序遍历
        if root is None:
            return True
        if root and root.left == None and root.right == None:  # 只有根节点
            return True
        if root and root.left and root.right:
            self.pre_order(root.left, bli)
            self.post_order(root.right, fli)
            fli.reverse()  # 将后序遍历的列表倒序
            if bli == fli:
                return True
        else:
            return False



    def pre_order(self,root,li):
        if root:
            li.append(root.val)
            self.pre_order(root.left,li)
            self.pre_order(root.right,li)
        elif root is None:
            li.append(None)
    def post_order(self,root,li):
        if root:
            self.post_order(root.left,li)
            self.post_order(root.right,li)
            li.append(root.val)
        elif root is None:
            li.append(None)

c++用dfs来做

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(!root) return true;
        return dfs(root->left,root->right);
        
    }
private:
bool dfs(TreeNode* root1, TreeNode* root2){
    if(!root1&&!root2) return true;
    if(!root1||!root2) return false;
    if(root1->val!= root2->val) return false;
    return dfs(root1->left,root2->right) && dfs(root1->right,root2->left);
}
};

 

 
力扣(LeetCode) 101: 对称二叉树 - 解法思路 给定一个二叉树的根节点root,检查它是否是轴对称的(即,围绕其中心镜像对称)。左子树是右子树的镜像反射对应节点具有相同的值结构是镜像的两种方法都实现了 O(n) 时间复杂度。递归解决方案通常因其简单性而更受欢迎。对称树要求左子树是右子树的镜像,这意味着比较left.left与以及left.right与right.left。 阅读详情

相关推荐

【简单】力扣算法题解析LeetCode101:对称二叉树

本文探讨了如何判断二叉树是否对称的问题。通过递归和迭代两种方法实现:递归法通过比较左右子树的镜像关系(左左对右右,左右对右左)实现高效判断,时间复杂度O(n);迭代法则利用队列按层比较对称节点。两种方法均需处理空节点和值不等的边界条件。递归法代码简洁,适合小规模树;迭代法避免栈溢出,适合大规模数据。附Java实现代码及LeetCode提交结果,展示了两种方法的时间/空间复杂度对比。

ylumwd的博客 454

LeetCode 101.对称二叉树(DFS、BFS)

给定一个二叉树,检查它是否是镜像对称的。

晴空๓ 5232

LeetCode——101,对称二叉树

/** * \* Created: liuhuichao * \* Date: 2019/8/22 * \* Time: 35:53 AM * \* Description: 对称二叉树 * 给定一个二叉树,检查它是否是镜像对称的。 * <p> * 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 * <p> * 1 * / \ * ...

我们的征途是星辰大海 669

LeetCode 力扣 101. 对称二叉树

题目描述(简单难度) 判断一个二叉树是否关于中心轴对称。 解法一 和 100 题 判断两个二叉树是否相等其实是一样的思路,都是用某种遍历方法来同时遍历两个树,然后看是否对应相等。 这里的需要遍历的两个树就是左子树和右子树了。 这里的对应相等的话,因为判断左子树 A 和右子树 B 是否对称,需要判断两点。 A 的根节点和 B 的根节点是否相等 A 的左子树和 B 的右子树是否相等,同时 A 的右...

wind_liang的博客 906

<视觉>——单目相机的标定(简单原理+Opencv实现)

单目相机的标定原理大致如下: 世界坐标到像素坐标的转换。 期间的参数有S尺度因子,内参矩阵K,旋转矩阵R,平移矩阵T,一共八个未知数。 在Opencv中我们可以方便的根据相机拍摄不同位姿的标定板图片来标定相机,从而求得这些参数,从而可以将相机下的坐标和实际的世界坐标联系起来,求取单应性矩阵H 参考: 单目相机综述:写的特别好 https://www.cnblo...

Kano365的博客 1万+

大话西游2单机版V8一键架设教程:5分钟搞定GM权限和仙玉修改(附完整物品代码表)

本文详细讲解了大话西游2单机版V8的一键架设教程,包括5分钟快速配置GM权限、仙玉修改及物品代码使用技巧。通过分步指导和服务端配置详解,帮助玩家轻松掌握游戏管理功能,重温经典回合制体验。附完整物品代码表,助你快速获取稀有道具和神兽。

weixin_42557830的博客 1233

LeetCode 101 ----- 对称二叉树

LeetCode 101 ----- 对称二叉树 题目描述 给定一个二叉树,检查它是否是镜像对称的。 思路 **对称,可以看做镜像 根节点为 null,则为对称二叉树 如果两个数都是空树,算镜像 两个数一个为空,有个非空,则不是镜像 如果两个树都不为空 a)比较根节点是不是相同,不相同就不是镜像 b)递归比较子树,t1.left 和 t2.right , t1.right 和 t2.left 是...

lsy18392609095的博客 170

MiniMax H3 + ComfyUI 工作流搭建指南:从整合包到视频生成

AI视频生成正成为内容创作的新基础设施,而ComfyUI作为可视化工作流引擎,将复杂的模型推理过程拆解为节点与连线,让本地视频生成变得可复用、可批量。理解这一原理后,用户无需编写代码,只需掌握模型加载、提示词控制、采样与解码的基本链路,即可搭建出稳定的视频生产管线。MiniMax H3作为前沿视频生成模型,在ComfyUI中通过权重文件和自定义节点落地,配合整合包可大幅降低环境配置门槛。从硬件评估、目录结构到节点连接与参数调优,本文系统性梳理了从零跑通一条视频生成工作流的完整路径,帮助用户在批量素材生成、风

weixin_29057065的博客 415

101. 对称二叉树【 力扣(LeetCode) 】

给你一个二叉树的根节点 root , 检查它是否轴对称。进阶:你可以运用递归和迭代两种方法解决这个问题吗?

yyh520025的博客 1234

LaTeX伪代码字体大小调整全攻略:从algorithm到algorithm2e的实战技巧

本文详细介绍了在LaTeX中调整伪代码字体大小的全面技巧,涵盖algorithm、algorithmicx和algorithm2e等主流算法包的使用方法。从基础命令到高级配置,帮助用户解决学术论文和技术文档中的伪代码排版问题,提升算法展示的专业性和可读性。特别针对不同期刊格式要求,提供了实用的字体调整方案。

weixin_29297127的博客 437

嵌入式工程师必看:BLDC电机驱动电路设计全流程(附MOS管选型指南)

本文为嵌入式工程师提供了BLDC电机驱动电路设计的全流程实战指南。文章深入解析了三相全桥逆变电路的核心原理,并重点阐述了功率MOSFET的选型关键参数,如Vds、Rds(on)和Qg。同时,详细介绍了栅极驱动设计、PCB布局布线要点及调试安全步骤,旨在帮助开发者构建稳定高效的BLDC驱动系统。

weixin_29194817的博客 589

瑞_力扣LeetCode_101. 对称二叉树

本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列,主要以力扣LeetCode网的题进行解析与分享。力扣LeetCode_101. 对称二叉树

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1389

S7-200 SMART Modbus RTU从站配置与调试实战指南

本文提供了一份详细的S7-200 SMART PLC配置为Modbus RTU从站的实战指南。内容涵盖从硬件基础、软件准备、指令库调用、核心编程到地址映射与调试排错的完整流程。重点解析了MBUS_INIT与MBUS_SLAVE指令的关键参数配置,并深入探讨了Modbus地址与PLC内部V存储区的对应关系,帮助工程师快速打通通讯链路,实现与上位机、触摸屏等主站设备的稳定数据交互。

potato的博客 754

Leetcode 101. 对称二叉树

Leetcode 101. 对称二叉树1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/symmetric-tree/   本质上就是一个二叉树的深度优先搜索问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "a

珍惜 8862

⑤单细胞学习-cellchat组间通讯差异分析

参考:

hx2024的博客 1980

【ArcGIS Pro微课1000例】0022:基于DEM进行流域分析生成流域图

填洼Fill,在进行水文分析后续操作前,首先要对DEM进行填洼,创建无凹陷点的DEM。在ArcGIS中使用的是八方向流量建模(D8算法),工具位于水文分析下的【流向】。填洼需要使用水文分析工具下的【填洼】。确定输入与输出即可。

智慧空间实验室 2753

力扣 101 对称二叉树【递归三步法】

力扣 101 对称二叉树【递归三步法】 文章目录力扣 101 对称二叉树【递归三步法】全部刷题与学习记录原题目考查知识点自己的第一遍解法好的解法 全部刷题与学习记录 【C++刷题学习笔记目录】 【C++百万并发网络通信-笔记目录】 原题目 题目地址:101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3

日月既往,不可复追 485

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【力扣】101.对称二叉树

力扣 101题对称二叉树 c++解法

Father_Of_Soft的博客 315

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《LeetCode力扣练习》第101题 对称二叉树 Java

《LeetCode力扣练习》第101题 对称二叉树 Java 一、资源 题目: 给你一个二叉树的根节点 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 进阶:你可以运用递归和迭代两种方法解决这个问题吗? 来源:力扣(LeetC

XRT_knives的博客 297

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LeetCode 101对称二叉树

LeetCode 101对称二叉树 题目简述:给定一个二叉树,检查它是否是镜像对称的。 二叉树 [1,2,2,3,4,4,3] 是对称的,但是 [1,2,2,null,3,null,3] 则不是镜像对称的 思路:递归O(n) 两个子树互为镜像当且仅当: 两个子树的根节点值相等; 第一棵子树的左子树和第二棵子树的右子树互为镜像,且第一棵子树的右子树和第二棵子树的左子树互为镜像; class Solution { public: bool cmp(TreeNode* p, TreeN

XBlog 168

LeetCode101(力扣101):对称二叉树 C++

101.对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个问题吗? 我提交的代码 class Solution { public: bool isDCtre

VegetableGirl的博客 507

LeetCode 101. 对称二叉树

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 101. 对称二叉树,做好准备了么,那么开始吧。 🌲🌲🐴🐴

weixin_62275996的博客 760

LeetCode第101题_对称二叉树

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

qq_40263592的博客 1025

101. 对称二叉树 - 力扣(LeetCode)

和100题一样的思想,只不过传入方式不同,同时传入的left和right总是轴对称的,和100题处于同一个位置一样。

xxm919的博客 140

Leetcode101:对称二叉树

Java,若左子树的左孩子和右子数的右孩子不相等或左子树的右孩子和右子数的左孩子不相等,就返回false。给你一个二叉树的根节点 root , 检查它是否轴对称。

qq_52726736的博客 255

力扣 101. 对称二叉树

以上就是今天要讲的内容,本文简单介绍了 力扣 101. 对称二叉树 的解题思路,在力扣以及牛客网中还会有很多类似的题目,今后将会持续更新,敬请关注!

m0_73724954的博客 184
上一篇: leetcode965. 单值二叉树
下一篇: leetcode.525. 连续数组
eilot_c
博客等级 码龄11年 902粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值