力扣刷题Days13-101对称二叉树(js)

目录

1,题目

2,代码

2.1递归思想

2.2队列--迭代思想

3,学习与总结


1,题目

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

2,代码

2.1递归思想

return dfs(left.left, right.right) && dfs(left.right, right.left); 这行代码的含义是,只有当这两个递归调用都返回 true 时,整个表达式才会返回 true

这里的 && 是逻辑与运算符,用于确保以下两个主要条件同时满足:

  • dfs(left.left, right.right) 检查当前节点的左子节点的左子树与右子节点的右子树是否对称。如果它们不对称(即,函数返回 false),则整个表达式立即返回 false,不再继续计算后面的条件。
  • dfs(left.right, right.left) 检查当前节点的左子节点的右子树与右子节点的左子树是否对称。这个调用只有在第一个调用返回 true 的情况下才会被评估,因为 && 运算符具有短路特性,即如果第一个操作数为 false,则不会评估第二个操作数。

加上 && 确保了只有在两对子树同时满足对称条件时,函数才会返回 true,这对于验证树的对称性是必要的。如果任何一对子树不对称,整个树就不对称,函数就会返回 false

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function(root) {
    function dfs(left,right){
        if(left === null &&right === null){
            return true;
        }
        if(left===null || right === null){
            return false;
        }
        if(left.val != right.val ){
            return false;
        }

        return dfs(left.left,right.right) && dfs(left.right,right.left);
    }

      if(root === null){
          return true;
      }

      return dfs(root.left,root.right);
};

2.2队列--迭代思想

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function(root) {
    // 借助队列
    if(root === null || root.left===null && root.right===null){
        return true;
    }
    // 数组模拟队列
    let queues=[];
    queues.push(root.left);
    queues.push(root.right);

    while(queues.length > 0){
        const left = queues.shift();
        const right = queues.shift();
        if(left === null && right===null){
            continue;
        }
        if(left === null || right===null){
            return false;
        }
        if(left.val != right.val){
            return false;
        }
        //将左节点的左孩子, 右节点的右孩子放入队列
        queues.push(left.left);
        queues.push(right.right);
        //将左节点的右孩子,右节点的左孩子放入队列
        queues.push(left.right);
        queues.push(right.left);  
    }

    return true;
};

3,学习与总结

树的递归思想 对我来说 在上难度了,多次思考,多问为什么,帮助自己提升自己的思维!


勉励自己:贵在坚持!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理之机器:存储器之高速缓冲存储器

计算机组成原理之机器:存储器之高速缓冲存储器 笔记来源:哈尔滨工业大学计算机组成原理(哈工大刘宏伟) Chapter3:存储器之高速缓冲存储器 3.1 概述 3.1.1 为什么用cache? 角度一:I/O设备向…

el-form-item内的el-select如何自适应宽度

最近在使用element-ui做后台管理的时候,有个需求是在弹窗组件里面,添加一个el-select下拉框选项,但是给el-select设置的宽度无法自适应,原因很简单,我们不需要设置固定宽度,设置百分比就行了,让…

你适合学Python吗?学了Python可以做什么工作?

每天叫醒你的不是闹钟,而是梦想 目前在很多行业中都在越来越多的应用Python,这也是很多行业学习Python的原因,Python主要的应用领域有哪些呢?今天我们就来详细看一下。 谁适合学Python? 我们首先来看一看谁在学Pytho…

【AI+应用】模仿爆款视频二次创作短视频操作步骤

本来不想水这篇的, 剪辑软件估计很多人用的比我还6。 今天自己遇到1个需求,我看到一篇公众号文章的视频觉得有意思,但视频有点长,我没带耳机看视频的习惯,就想着能不能下载下来, 提取视频的音频转为文字&am…

腾讯:《智能科技 跨界相变——2024数字科技前沿应用趋势》

1月23日,腾讯发布了题为《智能科技 跨界相变——2024数字科技前沿应用趋势》的报告,报告从计算重塑、智能升维、沉浸交互、未来连接四个方面,对100多项未来技术和重点方向给出了趋势性判断。并表示我们正驶向一个由连接衍生交互、由计算催生智…

JavaWeb笔记 --- 二、Maven

二、Maven Maven概述 所有的IDE创建的Maven项目都可以使用 Maven简介 Maven模型 Maven常用命令 Maven生命周期 Maven坐标 依赖管理 dpendencies:依赖 依赖范围

2016年认证杯SPSSPRO杯数学建模C题(第一阶段)如何有效的抑制校园霸凌事件的发生解题全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 C题 如何有效的抑制校园霸凌事件的发生 原题再现: 近年来,我国发生的多起校园霸凌事件在媒体的报道下引发了许多国人的关注。霸凌事件对学生身体和精神上的影响是极为严重而长远的,因此对于这些情况我们应该…

C#实现归并排序算法

C#实现归并排序算法 以下是 C# 中的归并排序算法实现示例: using System;class MergeSortAlgorithm {// 合并两个子数组static void Merge(int[] arr, int left, int mid, int right){// 计算左子数组和右子数组的长度int n1 mid - left 1;int n2 right - mid;/…

LSF live reconfiguration

背景 LSF的配置管理相对比较原始,通过配置文件设置集群中的各种参数。管理员在修改LSF参数时需要很多的手工操作:先通过编辑器修改配置文件,然后还要运行一个或两个命令才能激活配置,而且配置也不是立即生效,还有几秒…

【性能测试】Jmeter性能压测-阶梯式/波浪式场景总结(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、阶梯式场景&am…

从huggingface下载模型像本地加载但是UnicodeDecodeError

我自己是在Linux下出现了这个问题 原文:https://github.com/huggingface/transformers/issues/13674 The path for the AutoModel should be to a directory pointing to a pytorch_model.bin and to a config.json. Since you’re pointing to the .bin file dire…

【二】【算法分析与设计】编程练习

数字三角形 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 KiKi学习了循环,BoBo…

代码随想录 回溯算法-排序

目录 46.全排序 47.全排列|| 332.重新安排行程 46.全排序 46. 全排列 中等 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,…

Java零基础 - 数组的定义和声明

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

Git 远程操作

1.分布式版本控制系统 我们目前所说的所有内容(工作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上。而我们的 Git 其实是分布式版本控制系统!什么意思呢 可以简单理解为&am…

Windows下PostgreSQL安装教程

一、下载 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

提醒一下!今年考研的人不要太老实了!!

今年准备计算机考研的同学,别太老实了!别人说什么你就信什么 如果你的工作能力不足以支撑找到一个满意的工作,那我建议再沉淀两年! 很多同学其实有点眼高手低,在计算机专业,低于1w的工作看不上&#xff0…

论文阅读:Scalable Diffusion Models with Transformers

Scalable Diffusion Models with Transformers 论文链接 介绍 传统的扩散模型基于一个U-Net骨架,这篇文章提出了一种新的扩散模型结构,将U-Net替换为一个transformer,并将这种结构称为Diffusion Transformers (DiTs)。他们还发现&#xff…

【网络】:HTTP服务器

HTTP服务器 一.预备知识二.HTTP的请求和响应三.写一个简单的HTTP服务器四.返回响应五.HTTP方法和状态码 一.预备知识 1.域名 https://www.baidu.com,这是一个域名。在技术角度上,访问一个服务器其实只需要知道它的ip和域名就行了,而域名主要…

电力物联网系统设计

电力物联网系统设计 简介 在新能源行业从业多年,参与和负责过大大小小的的项目,发电侧、电网侧、用户侧系统都有过实际的项目经验,这些项目或多或少都有物联网采集方面的需求,本篇文章将会对电力行业物联网经验做一个总结分享。 …