57.对称二叉树

news2024/11/26 5:27:32

迭代

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root==null){
            return true;
        }
        Deque<TreeNode> de=new LinkedList<>();
        TreeNode l,r;
        int le;
        de.offer(root.left);
        de.offer(root.right);
        while(!de.isEmpty()){
            l=de.pollFirst();
            r=de.pollLast();
            if(l==null&&r==null){
                continue;
            }
            if((l!=null&&r==null)||(l==null&&r!=null)||l.val!=r.val){
                return false;
            }
            if(l!=null&&r!=null){
                de.offerFirst(l.left);
                de.offerFirst(l.right);
                de.offerLast(r.right);
                de.offerLast(r.left);
            }
        }
        return true;
    }
}
class Solution(object):
    def isSymmetric(self, root):
        if root is None:
            return True
        de=collections.deque()
        de.append(root.left)
        de.append(root.right)
        while de:
            l=de.popleft()
            r=de.pop()
            if l is None and r is None:
                continue
            if (l is None and r) or (l and r is None) or l.val!=r.val:
                return False
            if l and r:
                de.appendleft(l.left)
                de.appendleft(l.right)
                de.append(r.right)
                de.append(r.left)
        return True

 

递归(本方法非原创,来自代码随想录)

//本方法非原创,来自https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root==null){
            return true;
        }
        return Compare(root.left,root.right);
    }
    private boolean Compare(TreeNode left, TreeNode right) {

        if(left==null&&right!=null){
            return false;
        }
        if(left!=null&&right==null){
            return false;
        }
        if(left==null&&right==null){
            return true;
        }
        if(left.val!=right.val){
            return false;
        }
        // 比较外侧
        boolean compareOutside=Compare(left.left,right.right);
        // 比较内侧
        boolean compareInside=Compare(left.right,right.left);
        return compareOutside && compareInside;
    }
}
#本方法非原创,来自https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC
class Solution(object):
    def isSymmetric(self, root):
        if root is None:
            return True
        def Compare(left,right):
            if left is None and right:
                return False
            if left and right is None:
                return False
            if left is None and right is None:
                return True
            if left.val!=right.val:
                return False;
            #比较外侧
            compareOutside=Compare(left.left,right.right)
            #比较内侧
            compareInside=Compare(left.right,right.left)
            return compareOutside and compareInside
        return Compare(root.left,root.right)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2195017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用MATLAB代码生成器生成ADRC跟踪微分器(TD) PLC源代码(ST)

ADRC线性跟踪微分器TD详细测试 ADRC线性跟踪微分器TD详细测试(Simulink 算法框图+CODESYS ST+博途SCL完整源代码)-CSDN博客文章浏览阅读383次。ADRC线性跟踪微分器(ST+SCL语言)_adrc算法在博途编程中scl语言-CSDN博客文章浏览阅读784次。本文介绍了ADRC线性跟踪微分器的算法和…

P3197 [HNOI2008] 越狱

题目传送门 题面 [HNOI2008] 越狱 题目描述 监狱有 n n n 个房间&#xff0c;每个房间关押一个犯人&#xff0c;有 m m m 种宗教&#xff0c;每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同&#xff0c;就可能发生越狱&#xff0c;求有多少种状态可能发生越狱。 …

js操作元素的其他操作(4个案例+效果图+代码)

目录 1. 获取元素的位置和大小 案例:获取元素的位置和大小 1.代码 2.效果 2. 获取元素的可视区域 案例:获取元素的可视区域 1.代码 2.效果 3. 元素的滚动操作 案例:元素的滚动操作 1.代码 2.效果 4. 获取鼠标指针位置 案例:时刻获取鼠标位置 1.代码 2.效果 案例:拖动的小球 1.代…

第一个Flutter应用(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范&#xff0c;其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码&#xff08;为了阅…

为什么一定要用大模型,为什么说AI大模型开发人人必备?

AI 大模型技术经过2023年的狂飙&#xff0c;2024年迎来应用的落地&#xff0c;对 IT 同学来讲&#xff0c;这里蕴含着大量的技术机会&#xff0c;人人必备开发技能。 文讨论 AI 大模型开发技术大师的修炼之道&#xff0c;试图找到一个共同的速成模式&#xff0c;希望对 IT 同学…

数据结构(7.4_2)——B树的插入删除

B树的插入 B树的删除 对非终端结点的删除 对终端结点的删除 终端结点关键字低于下限时&#xff1a; 借后继结点&#xff1a; 借前驱结点&#xff1a; 结点合并&#xff1a; 总结 &#xff1a;

图像分割恢复方法

传统的图像分割方法主要依赖于图像的灰度值、纹理、颜色等特征&#xff0c;通过不同的算法将图像分割成多个区域。这些方法通常可以分为以下几类&#xff1a; 1.基于阈值的方法 2.基于边缘的方法 3.基于区域的方法 4.基于聚类的方法 下面详细介绍这些方法及其示例代码。 1. 基…

论文翻译 | Dynamic Prompting: A Unified Framework for Prompt Tuning

摘要 已经证明&#xff0c;在从预训练的基础模型中高效提取知识方面&#xff0c;提示调整&#xff08;prompt tuning&#xff09;技术是非常有效的&#xff0c;这些基础模型包括预训练的语言模型&#xff08;PLMs&#xff09;、视觉预训练模型以及视觉-语言&#xff08;V-L&…

【进阶OpenCV】 (7)--视频处理 - 之 - 背景建模及目标跟踪

文章目录 一、背景建模1. 目的2. 方法3. 帧差法4. 光流估计 二、代码步骤1. 读取视频2. 构建卷积核3. 背景建模 总结 一、背景建模 指在计算机视觉中&#xff0c;从视频序列中提取出静态背景的一种技术。在视频中&#xff0c;背景通常被定义为相对稳定的部分&#xff0c;例如墙…

vue2中 vue-count-to组件让数字从某个数字动态的显示到某个数字(后附vue3的用法)

1、首先安装 npm install vue-count-to2、使用 2.1、先导入组件 import countTo from ‘vue-count-to’2.2、注册组件 components: { countTo },2.3、使用组件 <countTo> <template><div class"home"><countTo class"count-to&qu…

【查找算法概念】与【线性表的相关查找算法】

1.知识回顾 2.查找算法相关问题汇总 2.1在哪里查找 查找表 2.2通过什么进行查找 关键字的对应 主关键字&#xff1a;比如我们可以通过一个学号来唯一确定一名学生 这里的学号就是一种主关键字。 次关键字&#xff1a;而通过一个名字李华&#xff0c;我们可能会确定不止一名…

selenium的webdriver常用方法和属性介绍(2)

selenium的webdriver介绍 从selenium导入webdriver模块&#xff0c;在pycharm中跳转webdriver模块的__init__.py文件&#xff0c;内容如图所示&#xff1a;从selenium包的子目录中导入了很多模块并做了重命名&#xff0c;用于支持如下 Chrome/Edge/Ie/Firefox/Safari浏览器。 使…

基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】

深度学习多焦点聚焦图像融合 文章目录 研究背景代码下载链接一、效果演示1.1 界面设计1.2 图像融合演示11.3 图像融合演示21.4 图像融合演示3 二、技术原理2.1 引言2.2 融合策略2.3 深度特征的提取2.4 融合策略2.4.1 利用深度特征计算模糊度2.4.2 去噪与平滑2.4.3 图像融合 三、…

计算机网络——p2p

流媒体是指在网络上以流式传输技术实时播放的多媒体内容&#xff0c;如音频、视频等。以下是关于流媒体的详细介绍&#xff1a; 一、工作原理 数据分割与传输&#xff1a; 流媒体技术将多媒体文件分割成较小的数据包。这些数据包按照特定的顺序进行编号&#xff0c;然后通过网络…

Luminar激光雷达公司裁员重组的深度分析

在科技行业风起云涌的今天,每一家企业都面临着前所未有的挑战与机遇。当地时间9月23日,美国激光雷达领域的领军企业Luminar Technologies向美国证券交易委员会(SEC)提交了一份8-K报告,正式宣布了一项重大的业务重组计划,其核心内容是通过进一步裁员来优化成本结构,以期在…

【英语】3. 词源

文章目录 前言动词变名词解释e.g. 一、词根二、介词短语spect/spec: means see, look 合成词三、介词本身的意思总结参考文献 前言 进行英语前后缀的复习 动词变名词 解释 外国的表达方式&#xff1a;更多地偏向静态&#xff0c;因此更多地使用名词 e.g. (rather Chinglish…

【数据结构与算法】排序算法

3.7 排序算法 概述 比较排序算法 算法最好最坏平均空间稳定思想注意事项冒泡O(n)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)Y比较最好情况需要额外判断选择O( n 2 n^2 n2)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)N比较交换次数一般少于冒泡堆O( n l o g n nlogn nlogn)O( n l o g n nlogn …

【Linux】认识Linux内核中进程级别的文件结构体【files_struct】&文件IO模型初步演示

前言 大家好吖&#xff0c;欢迎来到 YY 滴 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Linux》…

高效医疗:Spring Boot医院管理解决方案

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

算法题总结(十一)——二叉树下

257、二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5",&…