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

二叉树的右视图-leetcode

题目描述

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例 1:

输入:root = [1,2,3,null,5,null,4]

输出:[1,3,4]

解释:

img

示例 2:

输入:root = [1,2,3,4,null,null,null,5]

输出:[1,3,4,5]

解释:

img

示例 3:

输入:root = [1,null,3]

输出:[1,3]

示例 4:

输入:root = []

输出:[]

提示:

  • 二叉树的节点个数的范围是 [0,100]
  • -100 <= Node.val <= 100

解法一

思路:

层序遍历,同时加上分界符,当一个节点后一个是分界符就表示已经到达该层最右侧的节点,记录。首先在根节点之后就要加入分界符,之后正常入队出队操作,当出队元素为分界符,说明该层元素访问结束,应该在后面添加一个新的分界符。

代码:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> res = new ArrayList<>();if(root==null) return res;Queue<TreeNode> queue = new LinkedList<>();//构建分界符,使用-101代表分界符queue.offer(root);queue.offer(new TreeNode(-101));while (!queue.isEmpty()) {if(queue.peek().val==-101&&queue.size()==1)break;TreeNode node = queue.poll();//该节点为分界符,添加新的分界符if(node.val==-101){TreeNode decompose = new TreeNode(-101);queue.offer(decompose);continue;}//节点不为空而且下一个为分界符if(node!=null&&queue.peek().val==-101){res.add(node.val);}if(node.left!=null) queue.offer(node.left);if(node.right!=null) queue.offer(node.right);}return res;}
}
http://www.jsqmd.com/news/464258/

相关文章:

  • Win10无线网络共享给Ubuntu的完整配置指南(解决DNS和IP冲突问题)
  • 408考研必看:中缀转后缀表达式保姆级教程(附C语言完整代码)
  • AI-IMU论文复现全流程:从虚拟机配置到PyTorch环境搭建(避坑指南)
  • 每日60秒读懂世界|2026年3月11日:外贸创新高、6G上热搜、国际局势持续升温
  • 告别SSH黑窗口:5分钟用Windows远程桌面直连Linux图形界面(xrdp最新配置指南)
  • CMake实战--深入解析add_library的INTERFACE特性与应用
  • 图论2026Mar
  • WinRM连接失败?手把手教你用TrustedHosts解决Invoke-Command报错问题
  • AWS上给ALB配置错误率告警监控
  • 避坑指南:Windows本地开发环境搭建Jaeger+ES的完整流程
  • 问境AIST首发|以AI治理AI,悬镜原创多模态AIST新品发布
  • PCIe Capabilities List详解:如何通过链表结构管理硬件功能
  • PyTorch数据加载器shuffle参数详解:为什么训练集要打乱而验证集不用?
  • EME API与DRM技术:如何实现视频内容的防截屏与防录屏保护
  • AD24安装避坑指南:从下载到激活的完整流程(附常见问题解决)
  • 3,09
  • 告别强制重启!3种方法让Windows更新不再打扰你的工作(含PowerShell自动化方案)
  • Pixelium Design 更新:首版表格上线,完善表单、导航、反馈及视觉组件
  • YOLOv8损失函数实战:从IoU到Wise-IoU的替换与调优
  • MATLAB中vpasolve函数优化:多解策略在车辆漂移平衡态分析中的应用
  • 3.11 spring boot的自定义starter
  • Qwen3 32B大模型推理实战:vLLM与Docker高效部署指南
  • 老鸟整理,性能测试知多少?一篇带你彻底打通...
  • PCB设计软件选型指南:AD、Cadence与PADS的实战对比
  • Vivado工程瘦身指南:精准清理与关键文件保全策略
  • LLaMA-Factory性能优化秘籍:如何选择推理引擎与关键参数配置
  • LangChain 集成 Ollama:从基础对话到智能体构建实战
  • AHB协议实战解析:从流水线到突发传输的设计精髓
  • [RDK X5][实战]从零上手:地瓜机器人RDK X5的快速配置与核心功能验证
  • 【压测实战】Apifox动态变量与批量压测全流程解析