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

LeetCode 199. Binary Tree Right Side View 题解

LeetCode 199. Binary Tree Right Side View 题解

题目描述

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

示例 1:

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

示例 2:

输入: [1,null,3] 输出: [1,3]

示例 3:

输入: [] 输出: []

解题思路

方法:广度优先搜索(BFS)

思路

  • 使用广度优先搜索遍历二叉树,按层遍历
  • 对于每一层,记录最后一个节点的值,即为从右侧能看到的节点

复杂度分析

  • 时间复杂度:O(n),其中 n 是二叉树的节点个数。每个节点只被访问一次。
  • 空间复杂度:O(n),需要使用队列来进行广度优先搜索。

代码实现

方法:广度优先搜索(BFS)

# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right from collections import deque class Solution: def rightSideView(self, root: Optional[TreeNode]) -> List[int]: if not root: return [] result = [] queue = deque([root]) while queue: level_size = len(queue) # 遍历当前层的所有节点 for i in range(level_size): node = queue.popleft() # 如果是当前层的最后一个节点,将其值加入结果列表 if i == level_size - 1: result.append(node.val) # 将左子节点加入队列 if node.left: queue.append(node.left) # 将右子节点加入队列 if node.right: queue.append(node.right) return result

测试用例

测试用例 1:

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

测试用例 2:

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

测试用例 3:

输入:root = []
输出:[]

总结

本题是二叉树的经典问题,主要考察对二叉树遍历的理解和应用。通过使用广度优先搜索,我们可以高效地获取二叉树的右视图。

广度优先搜索的核心思想是:按层遍历二叉树,对于每一层,记录最后一个节点的值,即为从右侧能看到的节点。

这种方法不仅适用于二叉树的右视图问题,还可以应用于许多其他需要按层遍历二叉树的场景。掌握广度优先搜索的思想,对于解决这类问题非常重要。

http://www.jsqmd.com/news/593343/

相关文章:

  • 从过热保护到精准限流:用Multisim拆解一个线性电源的‘安全卫士’电路(TL431+运放实战)
  • Xilinx Ultrascale系列I/ODELAYE3级联优化策略与实战解析
  • Ollama环境变量全解析:除了OLLAMA_GPU_LAYER,这些参数也能大幅提升你的模型运行效率
  • 基于光伏出力利用率的电动汽车充电站能量调度策略:动态评估充放电灵活性,优化准入规则与电价制定...
  • Dual-Loop Adaptive AI System Whitepaper(DLAAS)双环自适应AI系统正式命名白皮书
  • Linux内核中的工作队列机制:异步任务处理的基石
  • COMSOL模拟:电磁超声压电接收技术在铝板裂纹检测中的应用
  • 程序员不用患上AI焦虑症
  • 深入解析字符串处理函数与printf的实现原理
  • GetQzonehistory:如何一键完整导出QQ空间所有说说的终极指南
  • 基于模型预测算法的微网双层能量管理模型:考虑储能优化与电池退化成本的全寿命周期仿真
  • Linux内核中的PREEMPT_RT实时补丁详解
  • Windows下用Fiddler+夜神模拟器抓取APP数据包完整指南(附证书配置避坑技巧)
  • 直流有刷电机闭环控制:主控DSP28335的AB编码器速度闭环系统
  • 基于DDPG算法的发电公司竞价策略代码逐逐段解读说明
  • 传统永磁同步电机的FOC离散化simulink模型,效果较好 附赠传递函数离散化推导的文档
  • 【实战指南】华为Atlas200 DK与电脑双通道连接:USB与网线方案全解析
  • python binascii
  • 告别云端API!用C#调用微信本地OCR,5分钟搞定扫描件文字提取
  • Linux内核中的Completion机制:同步等待的艺术
  • 三菱电梯保密资料解析与代码分析
  • python codecs
  • -python-langchain框架(3-6-pdf文件分页加载 )
  • 从零搭建TRACE32硬件调试环境:集成CANoe实现CANFD报文收发实战
  • 基于Vivado工程的FPGA多通道以太网实时同步采集系统——AD7606八通道同步采集与UD...
  • 智能工具赋能游戏体验:Snap Hutao开源游戏助手全面解析
  • 熵,PSI,IV在机器学习中的应用
  • Linux内核中的Per-CPU变量:无锁并发编程
  • 2026年全链路性能测试方案选型与实施指南
  • python zipfile