当前位置: 首页 > 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;}
}

相关文章:

  • 【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 的安装与配置 / 常见问题及解决方法
  • 做面食网站/北京口碑最好的it培训机构
  • 邯郸市人力资源和社会保障局/宁波seo推广优化公司
  • wordpress 去谷歌/seo快速排名外包
  • 个人能否做网站/百度seo优化
  • 重庆南岸营销型网站建设公司哪家专业/网站建站公司
  • 怎么做网站的ico/产品seo基础优化