LeetCode 199:二叉树的右视图 —— 利用层序遍历获取每层最右节点
给定一棵二叉树的根节点root想象自己站在二叉树的右侧按照从顶部到底部的顺序返回从右侧所能看到的节点值。示例输入root [1,2,3,null,5,null,4]对应二叉树1 / \ 2 3 \ \ 5 4从右侧观察1 3 4输出[1,3,4]另一个例子输入root [1,null,3]结构1 \ 3输出[1,3]二、为什么这道题值得学习这道题是二叉树遍历中的经典问题也是面试高频题。它主要考察二叉树层序遍历BFS 广度优先搜索如何获取每一层指定位置的节点很多同学看到“右视图”可能会想到从右边一直遍历。但实际上二叉树右视图的本质是每一层中最右边的节点。例如1 / \ 2 3 / \ 4 5按照层序遍历第一层1第二层2 3第三层4 5右视图看到的就是1 3 5所以只需要找到每一层最后访问的节点即可。三、核心思想层序遍历 记录每层最后一个节点二叉树层序遍历也就是 BFS。遍历顺序从上到下 从左到右例如1 / \ 2 3 / \ 4 5访问顺序1 2 3 4 5如果我们知道当前层有多少个节点。那么这一层最后被访问的节点就是右视图看到的节点。所以算法步骤使用队列保存节点每次处理一层节点记录当前层最后一个节点加入结果数组四、解题思路分析1. 使用队列进行层序遍历首先定义队列QueueTreeNode用于保存当前需要访问的节点。初始化将根节点加入队列。2. 获取当前层节点数量每次进入循环记录当前层节点数量int size queue.size();例如当前队列[2,3]说明这一层有两个节点。3. 判断是否为当前层最后一个节点遍历当前层for(int i 0; i size; i)当i size - 1说明当前节点是这一层最后访问的节点。也就是右视图看到的节点。加入答案result.add(node.val);五、代码实现BFS层序遍历class Solution { public ListInteger rightSideView(TreeNode root) { ListInteger result new ArrayList(); if(root null){ return result; } QueueTreeNode queue new LinkedList(); queue.offer(root); while(!queue.isEmpty()){ // 当前层节点数量 int size queue.size(); for(int i 0; i size; i){ TreeNode node queue.poll(); // 当前层最后一个节点 if(i size - 1){ result.add(node.val); } // 左节点加入队列 if(node.left ! null){ queue.offer(node.left); } // 右节点加入队列 if(node.right ! null){ queue.offer(node.right); } } } return result; } }六、过程图解例如1 / \ 2 3 \ \ 5 4要求右视图第一层队列[1]数量size 1访问1因为i size - 1所以加入result [1]加入下一层[2,3]第二层队列[2,3]数量size 2访问节点2i 0不是最后一个。访问节点3i 1满足i size - 1加入result [1,3]第三层队列[5,4]访问节点5不是最后。访问节点4最后一个节点。加入result [1,3,4]最终答案[1,3,4]七、复杂度分析时间复杂度O(N)原因每个节点都会被访问一次。空间复杂度O(N)原因队列最多存储一层节点。在最坏情况下完全二叉树最后一层节点数量接近N/2所以空间复杂度为O(N)八、另一种方法DFS递归除了 BFS。也可以使用深度优先遍历。核心思想优先访问右子树。因为右边节点更可能出现在右视图中。遍历顺序根节点 ↓ 右子树 ↓ 左子树例如1 / \ 2 3 \ 4访问1 3 4 2每个深度第一次访问到的节点就是该层右侧节点。代码class Solution { ListInteger result new ArrayList(); public ListInteger rightSideView(TreeNode root) { dfs(root,0); return result; } private void dfs(TreeNode root,int depth){ if(root null){ return; } // 当前深度第一次访问 if(depth result.size()){ result.add(root.val); } // 优先遍历右子树 dfs(root.right,depth 1); // 再遍历左子树 dfs(root.left,depth 1); } }九、两种方法比较方法思路时间复杂度空间复杂度BFS每层记录最后节点O(N)O(N)DFS优先访问右节点O(N)O(H)面试中更加推荐✅ BFS层序遍历因为它更加符合“右视图”的定义。十、常见错误与避坑指南❌ 错误一只遍历右子树很多人认为右视图就是一直走右孩子。这是错误的。例如1 / 2 \ 3如果只走右边只能得到1但是实际右视图1 2 3原因右视图看的是每层最右节点。不是整棵树的右链。❌ 错误二记录每层第一个节点错误i 0这样得到的是左视图。右视图应该记录i size - 1❌ 错误三忽略空树情况如果root null应该返回[]所以需要提前判断if(root null)十一、面试高频追问1. 为什么 BFS 可以解决右视图因为BFS 按层遍历。而右视图要求每层最右节点。所以记录每层最后访问节点即可。2. 为什么 DFS 要先访问右子树因为右子树节点优先被访问。每个深度第一次出现的节点就是该层最右节点。3. 如果要求左视图怎么办只需要改变遍历顺序左视图记录每层第一个节点。DFS优先访问左子树。总结LeetCode 199 的核心思想是二叉树右视图 每一层最右侧节点。通过层序遍历 BFS控制每层节点数量遍历当前层 ↓ 记录最后一个节点 ↓ 加入答案这道题不仅考察二叉树遍历还帮助理解BFS在树结构中的应用如何处理二叉树层级信息每层节点的统计技巧

相关新闻

从代码补全到工程协作:OpenAI Codex如何重塑AI编程工作流

从代码补全到工程协作:OpenAI Codex如何重塑AI编程工作流

如果你在找一款能真正理解代码上下文、帮你完成从功能开发到重构、测试、文档编写全流程的 AI 编程伙伴,而不是一个只会补全单行代码的“高级提示器”,那么 OpenAI 的 Codex 值得你花时间深入了解。我之所以反复推荐它,不是因为它来自某个大厂,而是因为它解决了一个核心痛点…

2026/7/25 6:44:23阅读更多 →
MCP协议解析:AI模型协同通信的核心技术

MCP协议解析:AI模型协同通信的核心技术

1. MCP技术全景解析:AI生态的神经中枢当我在调试一个多模态AI系统时,第一次在日志里看到"MCP连接超时"的报错,才意识到这个缩写已经渗透到AI开发的每个环节。MCP(Model Control Protocol)本质上是一套模型调…

2026/7/25 6:44:23阅读更多 →
KnowFlow Agent Day10:实现文档切片与数据保存

KnowFlow Agent Day10:实现文档切片与数据保存

一、今天完成的内容今天继续开发 KnowFlow Agent,主要完成了文档切片功能。前面的 Day08 和 Day09 已经实现了文档信息管理,以及 Spring Boot 调用 FastAPI 解析文档。今天在这个基础上,把解析后的长文本拆成多个较短的文本片段,并…

2026/7/25 6:44:23阅读更多 →
大模型API聚合技术:一行代码实现复杂AI功能

大模型API聚合技术:一行代码实现复杂AI功能

1. 项目概述:AI开发范式变革的前夜2026年的AI开发领域正在经历一场静默革命。三年前需要数百行代码才能实现的复杂NLP功能,如今通过一行Python调用就能完成。这种变化的核心在于大模型API聚合技术的成熟,它彻底重构了开发者与底层AI能力的交互…

2026/7/25 8:12:35阅读更多 →
YOLOv10n在工业托盘检测中的优化与应用

YOLOv10n在工业托盘检测中的优化与应用

1. 项目背景与核心价值在工业物流和仓储自动化领域,托盘识别一直是个经典但极具挑战性的计算机视觉任务。不同于常规目标检测,托盘识别需要处理金属反光、木质纹理干扰、堆叠遮挡等特殊场景。我们团队基于YOLOv10n框架,通过引入SPPF模块和LSK…

2026/7/25 8:12:35阅读更多 →
AI选股系统构建:多因子模型与量化投资实战

AI选股系统构建:多因子模型与量化投资实战

1. 项目背景与核心价值在量化投资领域,AI选股模型正逐步取代传统人工分析方式。这个系列教程的第四部分,我们将深入探讨如何构建一个完整的Stock Agent AI选股系统。不同于市面上简单的技术指标策略,我们的方案融合了多因子分析、市场情绪捕捉…

2026/7/25 8:12:35阅读更多 →
2026年AI论文写作十大神器推荐与使用指南

2026年AI论文写作十大神器推荐与使用指南

1. 项目背景与核心价值 去年指导本科生论文时,我发现学生们最头疼的不是选题或实验,而是找不到合适的AI论文平台。市面上的学术资源平台质量参差不齐,新手往往要踩过无数坑才能找到真正有用的工具。这促使我系统测评了37个主流平台&#xff0…

2026/7/25 8:12:35阅读更多 →
百度网盘解析工具:3分钟获取高速下载链接的终极指南

百度网盘解析工具:3分钟获取高速下载链接的终极指南

百度网盘解析工具:3分钟获取高速下载链接的终极指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾面对百度网盘几十KB的龟速下载而束手无策?…

2026/7/25 8:12:35阅读更多 →
Kubernetes Ingress-Nginx部署与优化指南

Kubernetes Ingress-Nginx部署与优化指南

1. Ingress-Nginx核心概念解析 在Kubernetes生态中,Ingress-Nginx作为流量入口控制器扮演着关键角色。它本质上是一个基于Nginx的7层负载均衡器实现,通过监听Kubernetes API Server的Ingress资源变更,动态生成Nginx配置并实现流量路由。与传统…

2026/7/25 8:10:35阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 1:01:14阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 1:01:14阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:01:16阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:01:16阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:01:16阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →