力扣刷题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,学习与总结

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


勉励自己:贵在坚持!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue-Router路由介绍和使用

vue属于单页面应用,路由就是根据浏览器路径不同,用不同的试图组件替换这个页面内容 开启路由功能 如图在创建项目时候勾选rouler 这样创建好的项目就有路由功能 下一步 不同的访问路径 展示不同的页面内容 路由配置 路由连接组件 浏览器会解析为超链接 …

跨境电商趋势解析:社交电商携手私域流量运营,精准触达与转化

随着全球化的深入发展,跨境电商逐渐成为全球贸易的重要组成部分。在这一背景下,社交电商作为一种新兴的商业模式,正逐渐在跨境电商领域崭露头角,并对私域流量的运营产生了深远的影响。本文Nox聚星将和大家分析社交电商在跨境电商中…

CentOS7部署SonarQube 9.9.4 LTS

文章目录 下载地址前置条件安装sonarqube创建用户解压修改sonar.properties配置文件 启动sonarqube开启防火墙端口启动报错访问SonarQube安装汉化包 安装sonar-scanner 下载地址 社区稳定版本 版本依赖关系 Prerequisites and overview (sonarsource.com) 前置条件 JDK11安…

Java集合面试题(day 02)

📑前言 本文主要是【JAVA】——Java集合面试题的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&am…

鞋服品牌怎样合理把控订货深度和宽度

在鞋服品牌的运营管理中,订货深度和宽度是两个至关重要的概念。订货深度指的是某一款式或规格的产品数量,而订货宽度则代表品牌所涵盖的产品种类和款式。合理把控订货深度和宽度对于品牌的库存管理、销售情况以及顾客满意度都有着深远的影响。本文将探讨…

电脑小问题:Windows更新后黑屏

Windows 更新后黑屏解决方法 在 Windows 更新后,伴随了一个小问题,电脑启动后出现了桌面黑屏。原因可能是火绒把 explorer.exe 当病毒处理了。 下面讲解 Windows 更新后黑屏的解决方法,步骤如下: 1. 按 ctrl alt delete 组合键…

Linux centos 常用的网络负载和网速查看工具和命令

在 CentOS 上查看网络速度和网络负载,可以使用多种工具,以下是一些常用的命令行工具: iftop - 用于实时监视网络带宽使用情况。 安装命令: sudo yum install iftop 使用命令: sudo iftop nload - 一个简单的控制…

最新基于R语言lavaan结构方程模型(SEM)实践技术应用

基于R语言lavaan程序包,通过理论讲解和实际操作相结合的方式,由浅入深地系统介绍结构方程模型的建立、拟合、评估、筛选和结果展示的全过程。我们筛选大量经典案例,这些案例来自Nature、Ecology、Ecological Applications、Journal of Ecolog…

react-native使用react-native-reanimated报错

error信息: Error: [Reanimated] UpdatePropsManager is not available on non-native platform. 解决方案一: 简单粗暴不在浏览器里看打印,关闭debugger即可。 解决方案二: 找到这个ts文件然后注释掉相关代码 然后给这个包打上…

LeetCode 刷题 [C++] 第3题.无重复字符的最长子串

题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 题目分析 可以使用滑动窗口加哈希表来实现: 使用start和end两个变脸来表示滑动窗口的头部位置和尾部位置,两者开始均为0;借助哈希表来记录已经遍…

【微信小程序】基本语法

目录 一、列表渲染&#xff08;包括wx:for改变默认&#xff09; 二、事件冒泡和事件捕获 三、生命周期 一、列表渲染&#xff08;包括wx:for改变默认&#xff09; 1、列表渲染(wx-for、block 改变默认wx:for item等) <view> {{msg}} </view> //渲染跟普通vu…

【JavaEE初阶】 JVM类加载简介

文章目录 &#x1f343;前言&#x1f332;类加载过程&#x1f6a9;加载&#x1f6a9;验证&#x1f6a9;准备&#x1f6a9;解析&#x1f6a9;初始化 &#x1f384;双亲委派模型&#x1f6a9;什么是双亲委派模型&#xff1f;&#x1f6a9;双亲委派模型的优点 ⭕总结 &#x1f343…