js 判断二叉树是否对称
方法一递归法javascriptfunction isSymmetric(root) { if (!root) return true; function isMirror(left, right) { // 如果两个节点都为空对称 if (!left !right) return true; // 如果其中一个为空不对称 if (!left || !right) return left right; // 检查当前节点值相等且左子树的左节点与右子树的右节点镜像 // 以及左子树的右节点与右子树的左节点镜像 return left.val right.val isMirror(left.left, right.right) isMirror(left.right, right.left); } return isMirror(root.left, root.right); }方法二迭代法使用队列javascriptfunction isSymmetric(root) { if (!root) return true; const queue [root.left, root.right]; while (queue.length) { const left queue.shift(); const right queue.shift(); // 两个节点都为空继续检查下一对 if (!left !right) continue; // 其中一个为空或值不相等不对称 if (!left || !right || left.val ! right.val) return false; // 成对入队左子树的左节点与右子树的右节点 queue.push(left.left); queue.push(right.right); // 左子树的右节点与右子树的左节点 queue.push(left.right); queue.push(right.left); } return true; }方法三迭代法使用栈javascriptfunction isSymmetric(root) { if (!root) return true; const stack [[root.left, root.right]]; while (stack.length) { const [left, right] stack.pop(); if (!left !right) continue; if (!left || !right || left.val ! right.val) return false; // 成对压栈 stack.push([left.left, right.right]); stack.push([left.right, right.left]); } return true; }测试代码javascript// 定义二叉树节点 class TreeNode { constructor(val, left, right) { this.val (val undefined ? 0 : val); this.left (left undefined ? null : left); this.right (right undefined ? null : right); } } // 测试用例 const root1 new TreeNode(1); root1.left new TreeNode(2, new TreeNode(3), new TreeNode(4)); root1.right new TreeNode(2, new TreeNode(4), new TreeNode(3)); const root2 new TreeNode(1); root2.left new TreeNode(2, null, new TreeNode(3)); root2.right new TreeNode(2, null, new TreeNode(3)); console.log(isSymmetric(root1)); // true console.log(isSymmetric(root2)); // false算法分析时间复杂度O(n)n 是节点数每个节点访问一次空间复杂度递归法O(h)h 是树的高度递归调用栈迭代法O(n)最坏情况下队列/栈需要存储 n/2 个节点思路要点对称二叉树的条件根节点相同左子树的左节点与右子树的右节点镜像左子树的右节点与右子树的左节点镜像递归法简洁直观但要注意递归深度迭代法使用队列或栈成对处理节点避免递归深度限制

相关新闻

亚马逊服务中断,超15万用户受影响

亚马逊服务中断,超15万用户受影响

周四,亚马逊遭遇服务中断问题,Downdetector收到超15万份相关报告,影响美国多个主要城市。不过截至晚7点,多数用户已恢复访问,服务有望很快完全恢复。 服务中断情况 据Downdetector数据,截至美东时间下午4点…

2026/7/8 15:55:18 阅读更多 →
Agent Skills:让你的AI Agent“干活”更专业,小白也能轻松掌握并收藏!

Agent Skills:让你的AI Agent“干活”更专业,小白也能轻松掌握并收藏!

本文介绍了Agent Skills的概念,旨在解决当前AI Agent在实际应用中遇到的问题。Agent Skills是一套标准化技能说明书,它介于Prompt和Tool之间,具有明确的使用场景、执行流程和输出标准,并可长期复用和版本管理。与Prompt和Tool相比…

2026/7/6 5:23:03 阅读更多 →
字节跳动SSP+70W+校招面经深度解析:收藏这份高频考点,小白也能逆袭拿下大厂Offer!

字节跳动SSP+70W+校招面经深度解析:收藏这份高频考点,小白也能逆袭拿下大厂Offer!

本文分享了字节跳动后端校招面试的核心考点,涵盖设计模式(策略模式、责任链模式)、HashMap并发安全、MySQL索引优化、消息队列与分布式事务等硬核知识。从数据库层面到应用层,详细解析了高并发扣减库存的优化策略,并对…

2026/5/17 8:47:41 阅读更多 →

最新新闻

物联网Node-Red开发教程-第6章 HTTP与Web服务

物联网Node-Red开发教程-第6章 HTTP与Web服务

第6章 HTTP与Web服务 学习目标 完成本章学习后,你将能够: 理解 Node-RED 中 HTTP 相关节点的作用和配置方法 使用 http in 和 http response 节点创建 REST API 使用 http request 节点调用外部 Web API 处理 URL 参数、请求体、状态码和响应头 实现 Webhook 接收、JSON 数据…

2026/7/8 15:54:00 阅读更多 →
BilibiliDown:5分钟搞定B站视频本地保存,告别网络限制烦恼

BilibiliDown:5分钟搞定B站视频本地保存,告别网络限制烦恼

BilibiliDown:5分钟搞定B站视频本地保存,告别网络限制烦恼 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.c…

2026/7/8 15:49:54 阅读更多 →
三步获取百度网盘高速下载链接:告别限速的终极解决方案

三步获取百度网盘高速下载链接:告别限速的终极解决方案

三步获取百度网盘高速下载链接:告别限速的终极解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗?作为非会员用…

2026/7/8 15:49:54 阅读更多 →
爆款AI智能体开发:从0到1的硬核指南

爆款AI智能体开发:从0到1的硬核指南

讲真的, 瞅见“AI智能体开发”这几个字, 好多人的首个反应是, 这也太难了吧。 我懂。 去年, 我最初接触之际亦是如此这般, 脑海中充斥着满满的代码、算法以及训练数据, 仿若置身于学习一门外星语言的情境之中。然而, 后续我察觉到, 事情并非那般玄奥诡谲。实际上, 真正令人头疼…

2026/7/8 15:47:53 阅读更多 →
如何在Windows上实现完美AirPlay投屏:终极免费方案指南

如何在Windows上实现完美AirPlay投屏:终极免费方案指南

如何在Windows上实现完美AirPlay投屏:终极免费方案指南 【免费下载链接】airplay2-win Airplay2 for windows 项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win 你是否曾羡慕Mac用户轻松将iPhone或iPad屏幕无线投射到电脑,而Windows用户…

2026/7/8 15:41:52 阅读更多 →
ENVI 非监督分类后处理:5x5 核函数小斑块消除与类别合并技巧

ENVI 非监督分类后处理:5x5 核函数小斑块消除与类别合并技巧

ENVI 非监督分类后处理:5x5 核函数小斑块消除与类别合并技巧遥感影像分类是地物信息提取的关键环节,而非监督分类因其无需先验知识的特性,在缺乏地面调查数据时展现出独特优势。然而ISODATA或K-Means算法生成的初始分类结果往往存在两大痛点&…

2026/7/8 15:41:52 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻