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

leetcode hot100【LeetCode 199. 二叉树的右视图】java实现

LeetCode 199. 二叉树的右视图

题目描述

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

示例:

输入: [1,2,3,null,null,5,null,6]

    1/ \2   3\   \5   6

输出: [1, 3, 6]

Java 实现代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> result = new ArrayList<>();if (root == null) return result;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int levelSize = queue.size();for (int i = 0; i < levelSize; i++) {TreeNode node = queue.poll();if(i == levelSize -1){result.add(node.val);}if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}}return result;}
}

解题思路

这个问题可以通过层次遍历(BFS)来解决。我们使用一个队列来存储每一层的节点,然后逐层遍历。在每一层,我们添加节点的值到结果列表中,然后添加它们的子节点到队列中。由于我们是按照从顶部到底部的顺序遍历,所以每一层的最后一个节点就是从右侧可见的节点。

复杂度分析

  • 时间复杂度:O(N),其中 N 是树中节点的数量。因为每个节点都会被访问一次。
  • 空间复杂度:O(M),其中 M 是树的最大宽度。在最坏的情况下,树可能是完全二叉树,此时队列中存储的节点数量最多,即树的最大宽度。

http://www.mrgr.cn/news/59639.html

相关文章:

  • C#生成SVG文件(文本、线段、圆、椭圆、多边形的示例)
  • LabVIEW显微镜自动对焦系统
  • elselect iphone上 要点两次
  • docker 安装kuboard
  • 【智能大数据分析 | 实验四】Spark实验:Spark Streaming
  • HarmonyOS 5.0应用开发——应用打包HAP、HAR、HSP
  • 分享几个可以免费使用GPT的网站
  • 《欢乐饭米粒儿》持续热播:第四期小品笑中有思,引发观众共鸣
  • 基于Spring Boot的中小型医院网站的设计与实现源码(springboot)
  • 计算机组成原理之寻址方式、寻址方式中哪种最常用、寻址方式中哪种效率最高
  • 通过 SYSENTER/SYSEXIT指令来学习系统调用
  • XQT_UI 组件|01|颜色
  • 知识见闻 - Gearbest电商平台
  • 144. 二叉树的前序遍历 递归
  • 双子塔楼宇可视化系统:提升建筑管理与运营效率
  • 必读篇:阿里云应用与低功耗4G模组AT开发示例指南
  • 【Unity踩坑】UWP应用未通过Windows应用认证:API不支持
  • 使用Claude新功能分析数据文件
  • 图像识别的技术原理及方法
  • 【后勤&运输集装箱】集装箱损伤检测系统源码&数据集全套:改进yolo11-ODConv
  • 【时间之外】IT人求职和创业应知【18】
  • Linux:编辑器Vim和Makefile
  • 掘金量化支持哪些操作系统与位数?
  • Java_成员方法
  • Chromium HTML5 新的 Input 类型number对应c++
  • 【rabbitmq】绑定死信队列示例