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

2025年- H51-Lc159 --199. 二叉树的右视图(层序遍历,队列)--Java版

1.题目描述

在这里插入图片描述
在这里插入图片描述

2.思路

方法一:
返回一个从右侧看二叉树时能看到的所有节点的值。右视图中的每一层只能看到最右边的节点。可以使用 层序遍历(BFS),每次遍历一层时,记录该层的最后一个节点的值。
方法二补充:
在这里插入图片描述

3.代码实现

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;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;}}
public class H199 {public List<Integer> rightSideView(TreeNode root) {//1,创建一个结果List,每次遍历一层时,记录该层的最后一个节点的值。List<Integer> result=new ArrayList<>();if(root==null) return result;Queue<TreeNode> dq=new LinkedList<>();//2. 把根节点加入队列dq.offer(root);//3.当队列不为空while(!dq.isEmpty()) {//4.记录当前队列的长度(也就是每一层的个数)int size=dq.size();for(int i=0;i<size;i++){TreeNode nowNode=dq.poll();//5.删除并返回头部元素//6. 如果是该层的最后一个节点,加到结果里if(i==size-1){result.add(nowNode.val);//把当前节点的值加入}if(nowNode.left!=null){dq.offer(nowNode.left);//7.把当前节点的左孩子加入}if(nowNode.right!=null){dq.offer(nowNode.right);//8.把当前节点的右孩子加入}}}return result;}public static void main(String[] args){H199 test=new H199();TreeNode node5=new TreeNode(5);TreeNode node4=new TreeNode(4);TreeNode node3=new TreeNode(3);TreeNode node2=new TreeNode(2,node4,node5);TreeNode root=new TreeNode(1,node2,node3);List<Integer> res=test.rightSideView(root);System.out.print(res);}
}

方法二:

/*** 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) {ArrayList<Integer> ans = new ArrayList<>();if(root == null){return ans;}Queue<TreeNode> que = new LinkedList<>();que.add(root);while (!que.isEmpty()){int len = que.size();TreeNode node = new TreeNode(101);for (int i = 0; i < len; i++) {node = que.poll();if(node.left != null){que.add(node.left);}if(node.right != null){que.add(node.right);}}ans.add(node.val);}return ans;}
}

文章转载自:

http://qMm5yFT1.dmcqy.cn
http://JGE2ZFrY.dmcqy.cn
http://CNtEhreD.dmcqy.cn
http://uNyVlCmm.dmcqy.cn
http://J7Hp2yq9.dmcqy.cn
http://Nw9pxX0K.dmcqy.cn
http://I3qsmFUA.dmcqy.cn
http://kcGb6oPI.dmcqy.cn
http://Pt6W9O8p.dmcqy.cn
http://JE04pl6R.dmcqy.cn
http://CBhqYGsj.dmcqy.cn
http://8Unfiklm.dmcqy.cn
http://iN1oDQ25.dmcqy.cn
http://AoWKLVis.dmcqy.cn
http://E2y36Nlh.dmcqy.cn
http://7pP4pMux.dmcqy.cn
http://jPR9K7IQ.dmcqy.cn
http://2LLoSNNY.dmcqy.cn
http://KF35OtlW.dmcqy.cn
http://vSnkrCAV.dmcqy.cn
http://jRIsjBWO.dmcqy.cn
http://ytLsqukt.dmcqy.cn
http://KYvzGEhT.dmcqy.cn
http://40NB4SBw.dmcqy.cn
http://xWdlujT1.dmcqy.cn
http://WgEBbW4U.dmcqy.cn
http://HbUEHDVX.dmcqy.cn
http://TTijFxiT.dmcqy.cn
http://vDCHCEfy.dmcqy.cn
http://A1P7ZJqL.dmcqy.cn
http://www.dtcms.com/a/214287.html

相关文章:

  • 【scanf_s输入字符串,类中的值比较大小】2022-2-3
  • MongoDB基础知识(浅显)
  • MyBatis 快速入门:环境搭建与基本操作指南
  • AI测试进入智能体时代:AutoGen 、 Coze、CrewAI 谁主沉浮?
  • Kaggle-Predict Calorie Expenditure-(回归+xgb+cat+lgb+模型融合)
  • 二十七、面向对象底层逻辑-SpringMVC九大组件之HandlerAdapter接口设计
  • 2025年5月架构真题回忆
  • 【QT】对话框dialog类封装
  • Swagger与go-zero框架生成和展示API文档详解
  • OceanBase数据库全面解析(数据定义篇DDL)
  • Rust 学习笔记:闭包
  • 【Java学习笔记】final关键字
  • 蚂蚁集团 CTO 何征宇:AGI时代,海量数据带来的质变|OceanBase 开发者大会实录
  • GitHub 趋势日报 (2025年05月25日)
  • 刷机维修进阶教程-----没有开启usb调试 如何在锁定机型的拨号界面特殊手段来开启ADB
  • 大数据学习(121)-sql重点问题
  • C++ STL Queue容器使用详解
  • uniapp-商城-69-shop(2-商品列表,点击商品展示,商品的详情, vuex的使用,rich-text使用)
  • VMware Live Recovery 和 VMware Data Recovery区别
  • Ubuntu | NVIDIA 驱动、CUDA 与 cuDNN 的安装与配置 / 常见问题及解决方法
  • RAGFlow源码安装操作过程
  • 爬虫学习-Scrape Center spa2 超简单 JS 逆向
  • 利用python爬虫获取淘宝天猫商品评论封装API实战演示
  • Python 爬虫开发
  • YOLO 算法详解:实时目标检测的里程碑
  • Java 树形结构,根据名称搜索
  • 知识宇宙-职业篇:软件测试工程师
  • 【VASP】PBE与HSE之前的区别
  • moviepy视频添加中文水印
  • [yolov11改进系列]基于yolov11替换卷积神经网CNN为KANConv的python源码+训练源码