101.对称二叉树

news2025/1/9 16:15:51

(写给未来遗忘的自己)

题目:

代码(层次递归:): 

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        std::queue<TreeNode*>lefttoright;
        std::queue<TreeNode*>righttoleft;

        if(root==nullptr) return true;
        lefttoright.push(root);
        righttoleft.push(root);

        while(!lefttoright.empty()&&!righttoleft.empty()){
            int layer_size=lefttoright.size();

            for(int i=0;i<layer_size;i++){
                TreeNode* root_left=lefttoright.front();
                TreeNode* root_right=righttoleft.front();
                lefttoright.pop();
                righttoleft.pop();
                
                if(root_left->left==nullptr&&root_right->right!=nullptr) return false;
                if(root_left->left!=nullptr&&root_right->right==nullptr) return false;
                if(root_left->right==nullptr&&root_right->left!=nullptr) return false;
                if(root_left->right!=nullptr&&root_right->left==nullptr) return false;

                if(root_left->left!=nullptr&&root_right->right!=nullptr){
                    if(root_left->left->val!= root_right->right->val) return false;}
            
                if(root_left->right!=nullptr&&root_right->left!=nullptr){
                    if(root_left->right->val!= root_right->left->val) return false;}
               
                if(root_left->left!=nullptr) lefttoright.push(root_left->left);
                if(root_left->right!=nullptr) lefttoright.push(root_left->right);
                if(root_right->right!=nullptr) righttoleft.push(root_right->right);
                if(root_right->left!=nullptr) righttoleft.push(root_right->left);

            }

        }
        return true;

    }
};

思路:

 利用两个队列,一个队列先放入左树的,一个先放入右树的,这样在一次取的数就是结构上对称的点。

代码(迭代递归) 

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        
        if(root==nullptr) return true;
        bool result=check(root->left,root->right);
        return result;
      
    }

    bool check(TreeNode*left,TreeNode*right){

        if(left==nullptr&&right!=nullptr) return false;
         else if(left!=nullptr&&right==nullptr)return false;
         else if(left==nullptr&&right==nullptr) return true;
         else if(left->val!=right->val) return false;
        
         bool outside=check(left->left,right->right);
         bool inside=check(left->right,right->left);
         bool result_t= outside&&inside;
         return result_t;
         
    }
};

思路:

将根节点的左右树输入。

直接处理输入的这一对左右数,而不是处理子树,情况可以减少一半。

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

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

相关文章

CSP-J基础之进制转换

文章目录 前言数制1. **二进制 (Binary)**2. **八进制 (Octal)**3. **十进制 (Decimal)**4. **十六进制 (Hexadecimal)** K进制转十进制例子 1&#xff1a;以二进制&#xff08;K 2&#xff09;为基数例子 2&#xff1a;以八进制&#xff08;K 8&#xff09;为基数例子 3&…

【MATLAB源码-第160期】基于matlab的胡桃夹子优化算法(NOA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 胡桃夹子优化算法&#xff08;Nutcracker Optimization Algorithm, NOA&#xff09;是一个灵感来源于胡桃夹子的故事的元启发式优化算法。这个故事中&#xff0c;胡桃夹子是一个能够将坚果壳轻易地破开以获取内部果仁的工具。…

滚珠花键助力生产加工精准化!

滚珠花键是一种机械传动元件&#xff0c;它通过花键轴与花键孔的配合&#xff0c;将动力从一个轴传递到另一个。在工业自动化领域内&#xff0c;滚珠花键系列产品主要用于辅助直线运动。尤其是在那些需要精密传动的应用场景&#xff0c;而滚珠花键在生产加工中的优势主要体现在…

Vulnhub:Dr4g0n b4ll 1

靶机下载地址 信息收集 主机发现 nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 靶机ip&#xff1a;192.168.31.183 端口扫描 nmap 192.168.31.183 -A -p- -T4 开放了22,80端口&#xff0c;端口详细信息如下&#xff1a; 网站信息收集 访问http服务。 …

WPF入门到跪下 第十一章 Prism(四)View与ViewModel的自动关联

View与ViewModel的自动关联 一、ViewModelLocator 在学习MvvmLight框架时&#xff0c;也使用了ViewModelLocator类。但在MvvmLight框架中&#xff0c;ViewModelLocator只是一个自定义类&#xff0c;与框架无关&#xff0c;目的就是初始化IOC容器。而在Prism框架中则不同&…

matplotlib中文乱码问题

在使用Matplotlib进行数据可视化的过程中&#xff0c;经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的&#xff0c;而matplotlib 默认使用ASCII 编码&#xff0c;但是当使用pyplot时&#xff0c;是支持unicode编码的&#xff0c;只是默认字体是英文字体&#xff0c;导…

【LeetCode】08.字符串转换整数

题目要求 解题思路 本题没有难点&#xff0c;只需注意最大整数的比较时要切换成long long 代码实现 class Solution { public:int myAtoi(string s) {//标记正负号int flag1;long long ret0;int ns.size();int i0;//去除空格while(s[i] ) i;//识别符号if(s[i]-) flag-1;i…

vue项目打包后,生成的index.html直接本地打开后没内容

应该是文件路径找不到了 可以打开控制台看看 可以看到加载css&#xff0c;js&#xff0c;图标资源失败&#xff0c;所以是文件路径问题 vue-cli工程化生成的项目在打包后&#xff0c;默认的资源寻找路径是根&#xff0c;所以可以看到它直接在/F;/favicon找图标&#xff0c;但…

机器学习模型中的因果关系:引入单调约束

单调约束是使机器学习模型可行的关键&#xff0c;但它们仍未被广泛使用欢迎来到雲闪世界。 碳ausality 正在迅速成为每个数据科学家工具包中必不可少的组成部分。 这是有充分理由的。 事实上&#xff0c;因果模型在商业中具有很高的价值&#xff0c;因为它们为“假设”情景提…

经典文献阅读之--WidthFormer(基于Transformer的BEV方案量产方案)

0. 简介 《WidthFormer: Toward Efficient Transformer-based BEV View Transformation》提出了WidthFormer&#xff0c;这是一种基于Transformer的新颖鸟瞰视角&#xff08;Birds-Eye-View, BEV&#xff09;三维检测方法&#xff0c;专为实时自动驾驶应用而设计。WidthFormer…

网络安全 day5 --- 反弹SHELL不回显带外正反向连接防火墙出入站文件下载

免责声明 本免责声明适用于作者所有文章内容。使用者需明确&#xff0c;网络安全技术仅供学习和合法研究使用&#xff0c;不得用于任何非法活动&#xff0c;如未经授权的入侵、攻击或数据窃取&#xff0c;所有相关法律责任由使用者自行承担。由于网络安全操作可能带来系统崩溃、…

程序中的零值比较

前言&#xff1a;什么是零值&#xff1f; 在C/C中&#xff0c;“零值”通常指的是数值类型的零&#xff08;0&#xff09;&#xff0c;对于指针来说则是空指针&#xff08;nullptr 或 NULL&#xff09;。下面我们将分别讨论如何比较整型、字符、浮点数和指针与“零值”的比较。…

顺序表与链表练习

目录 1.在长度为n(n > 1)的单链表上&#xff0c;设有头和尾两个引用&#xff0c;执行( )操作与链表的长度有关。 2.下列关于链表的说法那个是正确的( ) 3. 关于链表和顺序表间的区别&#xff0c;叙述错误的是&#xff08; &#xff09; 4.在长度为 n 的顺序表下标为 i…

oatpp apiclient 客户端get,post请求python fastapi demo

最新用fastapi搞了个服务端,python功能太强了,就是环境不好弄,弄好后,不要轻易换python版本,不要装多个python版本 前面搞了个oatpp webapi服务端,现在要用客户端,为什么用opatpp客户端,因为他不再带其他库了 demo: 我的请求比较简单,就是向python 的 fastapi服务端…

CSP-J基础之常见的竞赛题库

文章目录 CSP-J基础之常见的竞赛题库1. 可达 (KEDA)2. 洛谷 (Luogu)3. Codeforces 洛谷账号的注册总结 CSP-J基础之常见的竞赛题库 在备战CSP-J&#xff08;Certified Software Professional Junior&#xff09;及其他信息学竞赛时&#xff0c;选手们常需要借助在线题库来进行…

GIS圈大事件!Cesium被收购了,是好是坏?

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;致力于技术与艺术的融合。这是2024年输出的第34/100篇文章。 Cesium开发交流群V&#xff1a;brown_7778&#xff08;备注来意&#xff09; 一觉醒来&#xff0c;突然看到Cesium官方发的消息&#xff0c;宣布通过收购的方…

第十三届山东省ICPC

vp链接&#xff1a;https://codeforces.com/gym/104417 A. Orders 根据题意模拟&#xff0c;分别按照 a&#xff0c;b 排序&#xff0c;排序后再判断该订单是否能完成。 #include <bits/stdc.h> using namespace std;#define int long longconst int N 105; int n, k…

C#索引器(Indexer)

索引器(Indexer)允许一个对象可以像数组一样使用下标的方式来访问. 当为类定义一个索引器时,该类的行为就会像一个虚拟数组(virtual array) 一样.可以使用数组访问运算符[]来访问该类的成员. 语法 一维索引器的语法如下: element-type this[int index] { // get 访问器 …

Minimax-秋招正式批-面经(SQL相关)

1. 谈谈对聚簇索引的理解 聚簇索引 InnoDB通过主键聚集数据&#xff0c;如果没有定义主键&#xff0c;InnoDB会选择非空的唯一索引代替。如果没有这样的索引&#xff0c;InnoDB会隐式定义一个主键来作为聚簇索引聚簇索引就是按照每张表的主键构造一颗B树&#xff0c;同时叶子…

中国书法——孙溟㠭浅析碑帖《越州石氏帖》

孙溟㠭浅析碑帖《越州石氏帖》 《越州石氏帖》 是一部汇集多本摹刻的帖&#xff0c;南宋时期的会稽石邦哲&#xff08;字熙明&#xff09;把家藏的一些法书碑帖集中一起摹刻成的&#xff0c;宋理宗时临安书商陈思《宝刻丛编》有记載这部帖的目录。现在还存有宋代时拓的残缺本…