当前位置: 首页 > article >正文

039对称二叉树

对称二叉树题目链接https://leetcode.cn/problems/symmetric-tree/description/?envTypestudy-plan-v2envIdtop-100-liked我的解答//方法一递归 //时间复杂度O(n) //空间复杂度O(n) public boolean isSymmetric(TreeNode root) { return isEqual(root.left,root.right); } public boolean isEqual(TreeNode left, TreeNode right){ if(leftnullrightnull){ return true; } if(leftnull||rightnull){ return false; } if(!isEqual(left.left,right.right) || !isEqual(left.right,right.left)){ return false; } return left.valright.val; } //方法二迭代采用双端队列 //时间复杂度O(n) //空间复杂度O(n) public boolean isSymmetric(TreeNode root) { if(root.leftnullroot.rightnull){ return true; } if(root.leftnull||root.rightnull){ return false; } DequeTreeNode queue new LinkedList(); queue.addFirst(root.left); queue.addLast(root.right); while(!queue.isEmpty()){ TreeNode left queue.getFirst(); queue.removeFirst(); TreeNode right queue.getLast(); queue.removeLast(); if(left.val!right.val){ return false; } if(left.left!nullright.right!null){ queue.addFirst(left.left); queue.addLast(right.right); } if((left.leftnullright.right!null) || (left.left!nullright.rightnull)){ return false; } if(left.right!nullright.left!null){ queue.addFirst(left.right); queue.addLast(right.left); } if((left.rightnullright.left!null) || (left.right!nullright.leftnull)){ return false; } } return true; }分析​ 方法一解题思路采用递归。递归判断两个对称位置上的节点的值和子树是否也呈对称关系。​ 方法二解题思路采用迭代。通过将位置上对称的两个节点分别从队列的头和尾加入队列每次分别从队列头和尾取出一个节点并删除判断这两个节点的是否相等若不相等则二叉树不对称若相等且两个节点位置上对称的子节点都不为空则按照位置对称关系分别从队列头、尾加入队列若两个节点位置上对称的子节点存在一方为空但另一方不为空的情况就返回false不断重复以上过程若直到队列为空都还未出现不对称的情况则返回true。看了官方题解后的解答//官方题解的方法一与我的解答的方法一思路一致 //方法一递归 //时间复杂度O(n) //空间复杂度O(n) public boolean isSymmetric(TreeNode root) { return check(root.left, root.right); } public boolean check(TreeNode p, TreeNode q) { if (p null q null) { return true; } if (p null || q null) { return false; } return p.val q.val check(p.left, q.right) check(p.right, q.left); } //方法二迭代采用队列 //时间复杂度O(n) //空间复杂度O(n) public boolean isSymmetric(TreeNode root) { //将root加入队列两次可以避免单独讨论边界情况二叉树根节点 return check(root,root); } public boolean check(TreeNode u, TreeNode v){ //队列中连续的两个节点位置上是对称的 QueueTreeNode queue new LinkedList(); queue.offer(u); queue.offer(v); while(!queue.isEmpty()){ u queue.poll(); v queue.poll(); if(unullvnull){ continue; } if((unull || vnull) || u.val!v.val){ return false; } queue.offer(u.left); queue.offer(v.right); queue.offer(u.right); queue.offer(v.left); } return true; }分析方法二采用队列。首先将二叉树的根节点加入队列两次这样可以避免单独讨论边界情况。用两个指针u、v同时移动当u向左孩子移动时v向右孩子移动当u向右孩子移动时v向左孩子移动这样队列中连续的两个节点在位置上总是对称的。另外LinkedList实现的队列是允许插入null的所以在将对称位置的一对节点加入队列时可以避免单独讨论节点为null的情况。总结本题可采用递归和迭代两种方法进行解答。引入队列是把递归程序改写成迭代程序的常用方法。

相关文章:

039对称二叉树

对称二叉树 题目链接:https://leetcode.cn/problems/symmetric-tree/description/?envTypestudy-plan-v2&envIdtop-100-liked 我的解答: //方法一:递归 //时间复杂度:O(n) //空间复杂度:O(n) public boolean isSy…...

基于LLM与LangChain的智能项目管理Agent:架构设计与工程实践

1. 项目概述:一个面向项目管理的智能体框架 最近在开源社区里,我注意到一个名为 gannonh/agent-pm 的项目开始受到一些关注。乍一看这个名字,你可能会联想到“项目经理”或者“项目管理”,没错,这个项目的核心定位&…...

大模型私有化部署实战:LLAMATOR-Core核心引擎配置与性能调优指南

1. 项目概述:从“大模型”到“小核心”的工程化实践最近在折腾大模型应用落地的朋友,可能都绕不开一个核心痛点:如何把一个动辄几十GB、几百亿参数的“庞然大物”,真正塞进自己的业务系统里,让它稳定、高效、可控地跑起…...

VMware macOS解锁神器:Unlocker 3.0终极完整指南

VMware macOS解锁神器:Unlocker 3.0终极完整指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想要在Windows或Linux电脑上体验macOS系统,却苦于VMware默认不支持苹果系统&…...

基于LLM的AI新闻智能体:自动化信息采集与周报生成实战

1. 项目概述:一个能自动追踪AI新闻的智能体 最近在GitHub上看到一个挺有意思的项目,叫 ai-news-weekly-agent 。光看名字,你大概能猜到它是个和AI新闻相关的自动化工具。没错,它的核心目标就是扮演一个“AI新闻周刊编辑”的角色…...

突破性模组管理革命:RimSort如何解决RimWorld玩家的三大核心痛点

突破性模组管理革命:RimSort如何解决RimWorld玩家的三大核心痛点 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, comm…...

HsMod终极指南:如何通过55项功能全面优化炉石传说游戏体验

HsMod终极指南:如何通过55项功能全面优化炉石传说游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是基于BepInEx框架开发的炉石传说模改插件,专为提升…...

英雄联盟智能BP与战绩查询:你的排位赛终极助手

英雄联盟智能BP与战绩查询:你的排位赛终极助手 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾经在排位赛BP阶段手忙脚乱,不知道该禁用哪个英雄?或者想了解队友和对…...

终极iOS越狱完整指南:5个步骤解锁iPhone隐藏功能

终极iOS越狱完整指南:5个步骤解锁iPhone隐藏功能 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder 👇 项目地址: http…...

如何用茉莉花插件实现Zotero中文文献元数据一键抓取:终极解决方案

如何用茉莉花插件实现Zotero中文文献元数据一键抓取:终极解决方案 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在…...

Page Assist终极指南:3步安装本地AI浏览器助手,开启智能网页浏览新时代

Page Assist终极指南:3步安装本地AI浏览器助手,开启智能网页浏览新时代 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 想…...

2026亚洲消费电子展!媒体曝光资源加码

北京讯——2026年6月10日至12日,2026亚洲消费电子展将在北京盛大启幕。作为亚太消费电子领域极具影响力的行业盛会,本届展会全面升级品牌传播矩阵,百家主流媒体集结现场全程报道,全媒体曝光资源重磅加码。目前展会赞助合作席位余量…...

CircuitPython开发板选型指南:从需求到Adafruit产品实战解析

1. 项目概述:为什么选择CircuitPython开发板是个技术活如果你刚开始接触硬件编程,或者是从Arduino转向更友好的开发环境,那么CircuitPython绝对是一个让人眼前一亮的选项。它把Python的简洁语法带到了微控制器上,让你能用几行代码…...

基于Arduino与IRLib2的万能遥控器DIY:从红外解码到蓝牙HID的嵌入式实践

1. 项目概述与核心价值如果你和我一样,家里电视、机顶盒、音响、空调的遥控器堆满了茶几,每次想用都得翻找半天,或者你正在为一位行动不便的亲友寻找一种更便捷的控制家电的方式,那么这个基于Arduino和IRLib2的万能遥控器DIY项目&…...

AI Agents 越智能,企业的人类判断力需求反而会爆炸式增长:Jevons 悖论在企业落地中的隐形反弹

在企业全面拥抱 AI Agents 的当下,最容易被忽略的不是模型能力,而是“智能变便宜”之后带来的责任边界扩张。产品团队让 Agent 自动起草客户邮件、更新工单、标记流失风险、总结销售通话、推荐代码变更、升级支持问题、准备决策材料——每一步都变得前所…...

Windows驱动管理专业解决方案:Driver Store Explorer完全指南

Windows驱动管理专业解决方案:Driver Store Explorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer(简称Rapr)是一款…...

CircuitPython硬件编程在Linux单板机上的实现:以ODROID C2为例

1. 项目概述:当CircuitPython遇见Linux单板机如果你玩过树莓派Pico或者Adafruit的Feather开发板,肯定对CircuitPython不陌生。它让Python跑在了微控制器上,用几行代码就能点亮LED、读取传感器,对硬件新手和快速原型开发来说&#…...

ncmdump终极指南:3步快速解锁网易云音乐NCM加密文件的完整免费解决方案

ncmdump终极指南:3步快速解锁网易云音乐NCM加密文件的完整免费解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲只能在特定客户端播放而烦恼吗?ncmdump这款强大的NCM解密工…...

041二叉树的层序遍历

二叉树的层序遍历 题目链接&#xff1a;https://leetcode.cn/problems/binary-tree-level-order-traversal/description/?envTypestudy-plan-v2&envIdtop-100-liked 我的解答&#xff1a; public List<List<Integer>> levelOrder(TreeNode root) {List<Lis…...

[GESP202512 C++ 三级] 选择题第 8 题 ← unsigned int

【题目描述】 在一个特定的计算机系统中&#xff0c;假如 unsigned int 类型需要占用2个字节的存储空间&#xff08;每个字节有8位&#xff09;&#xff0c;则 unsigned int 可以表示的数据范围是&#xff08; A &#xff09; A. 0 ~ 65535 B. 0 ~ 65536 C. -65536 ~ 655…...

Atmosphere-stable:Nintendo Switch自制系统的技术架构深度剖析与实战指南

Atmosphere-stable&#xff1a;Nintendo Switch自制系统的技术架构深度剖析与实战指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 在Nintendo Switch自制系统领域&#xff0c;Atmosphe…...

Page Assist终极指南:5分钟为浏览器安装本地AI助手,彻底告别云端依赖

Page Assist终极指南&#xff1a;5分钟为浏览器安装本地AI助手&#xff0c;彻底告别云端依赖 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 想要…...

工业触控一体机选型与Linux应用开发全解析

1. 项目概述&#xff1a;当工业现场需要一块“聪明”的屏幕最近在跟进一个智慧工厂的MES&#xff08;制造执行系统&#xff09;终端升级项目&#xff0c;客户现场的老式工控机搭配笨重的显示器&#xff0c;不仅布线杂乱&#xff0c;操作响应慢&#xff0c;而且维护起来极其麻烦…...

基于Arduino HID与红外解码的遥控键鼠系统设计与实现

1. 项目概述如果你曾经想过&#xff0c;能不能用一个电视遥控器来控制电脑的鼠标光标&#xff0c;或者快速触发一些键盘快捷键&#xff0c;那么这个项目就是为你准备的。我最近基于Arduino平台&#xff0c;成功搭建了一个红外遥控鼠标和键盘系统&#xff0c;它不仅能让你在沙发…...

为Adafruit CLUE开发板设计超薄可拆卸3D打印外壳:从建模到装配全指南

1. 项目概述&#xff1a;为你的CLUE开发板“量体裁衣”如果你手头有一块Adafruit CLUE开发板&#xff0c;大概率会和我有同样的感受&#xff1a;这块板子功能强大&#xff0c;集成了屏幕、按钮、一堆传感器&#xff0c;但裸露的电路板和元器件总让人有点“心疼”&#xff0c;怕…...

CircuitPython displayio与触摸交互实战:复刻经典Neko猫咪动画

1. 项目概述与核心价值如果你玩过一些复古的掌机或者小型的嵌入式设备&#xff0c;可能会对屏幕上那只跟着你手指或光标跑的“Neko猫咪”有印象。这个源自上世纪经典屏保的小动画&#xff0c;在今天看来&#xff0c;依然是学习嵌入式图形和交互编程的绝佳入门项目。它麻雀虽小&…...

网盘直链解析工具终极指南:如何3分钟实现9大网盘下载加速

网盘直链解析工具终极指南&#xff1a;如何3分钟实现9大网盘下载加速 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

如何一键修复Windows系统依赖问题:VisualCppRedist AIO终极解决方案指南

如何一键修复Windows系统依赖问题&#xff1a;VisualCppRedist AIO终极解决方案指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过打开游戏或…...

OpenPnP贴片机新手避坑:从Allegro导出坐标文件到成功贴片,这5个细节决定成败

OpenPnP贴片机实战指南&#xff1a;从Allegro设计到精准贴片的5个关键控制点 引言 当PCB设计从图纸走向实体&#xff0c;贴片环节往往成为新手工程师的"滑铁卢"。我曾亲眼见证一个团队因为坐标文件导出时的0.5mm偏差&#xff0c;导致整批样板元件全部错位。这不是个例…...

HTML5中针对离线存储数据的自动清理与过期策略

...