【力扣】二叉树的右视图

树的层序遍历 突然想到写这个的原因是在四月份的每日一题里面有一个n叉树的层序遍历,然后自己做的其实不熟练。又想到之前又写过二叉树的层序遍历,所以就想着将几个题目一起总结起来。也算是加深一下印象了。 树的遍历方法一共四种: 先序遍历、中序遍历、后序遍历、层序遍历。 前三种方法中的序是指根节点的遍历顺序,一般使用递归(深度优先遍历)的方法实现。 层序遍历是指从最上层开始,一层一层的从左到右遍历,而不再是先左后右或先右后左。 层序遍历和广度优先搜索的思路比较像,维护一个队列,先将根结点放入队列中,当该结点出队列是,他的孩子结点 阅读详情

 🔥博客主页: 我要成为C++领域大神

🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】

❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于知识分享,与更多的人进行学习交流

10f3f804036d438784915f2c6f94fb5d.gif

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

示例 1:

 

3ff056a9af60d888853e955946a60247.png

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

示例 2:

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

示例 3:

输入: []
输出: []

层序遍历

思路

题目要求我们输出的是二叉树从右侧能看到的所有节点,即右子树最右边的节点,以及一部分左子树

画图来直观感受。

 

41a7e46dee9f7894471755e55dec1fbc.png

即每一层的最右边节点。

要查看每一层,所以容易想到层序遍历。

我们修改层序遍历的代码,当每次遍历到当前层最后一个节点时,将节点元素值存入数组即可。

代码实现

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
 * right(right) {}
 * };
 */
class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        vector<int> vec;
        if (root == nullptr)
            return vec;
        levelOrder(vec, root);
        return vec;
    }
    void levelOrder(vector<int>& vec, TreeNode* root) {
        queue<TreeNode*> que;
        que.push(root);
        while (!que.empty()) {
            int size = que.size();
            for (int i = 0; i < size; ++i) {
                TreeNode* node = que.front();
                que.pop();
                if (i == size - 1)
                    vec.push_back(node->val);
                if (node->left)
                    que.push(node->left);
                if (node->right)
                    que.push(node->right);
            }
        }
    }
};

 

【数据结构之二叉树系列】层序遍历 前面我们学习的几种遍历方式主要有:前序遍历,中序遍历,层序遍历。这几种遍历方式都是采用递归进行实现的,而今天学习的层序遍历采取的是非递归的方式进行实现,主要是迭代的方式进行实现,同时需要使用队列结构进行辅助实现。 阅读详情

相关推荐

数据结构:层序遍历 (Level-order Traversal)

该文详细介绍了二叉树的四种遍历方式:前序(DLR)、中序(LDR)、后序(LRD)三种深度优先遍历(DFS)和层序遍历(BFS)。重点分析了层序遍历的实现原理:使用队列按层级顺序访问节点,先访问根节点,再依次处理其左右子节点。文章通过示例树和队列操作步骤演示了具体过程,并提供了完整的C语言实现代码,包括队列结构定义、树节点创建和四种遍历方法的递归/非递归实现。最后强调这些遍历方法都是基于"如何不重不漏访问所有节点"这一核心问题推导出的解决方案。

2402_88047672的博客 1465

层序遍历?看这一篇就够了!

点关注不迷路 1.树的层序遍历 顾名思义,对于树型结构,层序遍历就是按层从上到下,每层按一定顺序对树的节点进行遍历。我们通过如图所示的二叉树进行说明:对于左边的二叉树,按层划分后可得到右边的分层结构。 如果按照每层从左到右的遍历逻辑,这棵二叉树的层序遍历序列就是 [1,4,2,7,20,5][1, 4, 2, 7, 20, 5][1,4,2,7,20,5]。通过代码如何实现呢?一般地,我们利用队列 queuequeuequeue 作为容器,按照如下逻辑进行遍历: // 0. 声明队列 queue<T

BNDSllx的博客 2万+

LeetCode 199 二叉树的右视图

在解决 LeetCode 199 二叉树的右视图(Binary Tree Right Side View)问题时,我们需要找到从二叉树右侧看见的节点值(即每一层中最靠右的节点值)。以下是多种解法、对应模板及变体问题的讨论。

互联网架构师笔记 1348

二叉树遍历——层序遍历

目录 1.什么是层序遍历? 2.实现思路 3.代码实现 1.什么是层序遍历? 就是将一颗树按照每一层每一层的方式进行遍历 例如这棵树,进行层序遍历的结果应该是 那么我们该怎样去实现呢? 2.实现思路 利用队列先进先出的思想去实现 重要思想:一层带一层 我们先把书的根节点入进去,然后每出一次都把它的子节点入队,出子节点时也一样 3.代码实现 因为我们用的是c来实现,所以在实现前请准备好一个队列 队列头文件 #pragma once #incl.

m0_67198282的博客 1万+

【中等】力扣算法题解析LeetCode199:二叉树的右视图

题目要求返回二叉树从右侧视角能看到的节点值,即每层的最右节点。通过层次遍历(BFS)逐层处理节点,记录每层最后一个节点的值即可解决。算法时间复杂度为O(N),空间复杂度为O(N)。Java代码使用队列实现BFS,在遍历时判断是否为当前层末尾节点,将其值加入结果列表。示例验证了算法的正确性,如输入[1,2,3,null,5,null,4]输出[1,3,4]。

ylumwd的博客 417

Ubuntu视频播放器怎么选?VLC、mpv、SMPlayer硬解与字幕配置指南

在Linux系统中,视频播放体验取决于播放器、解码器与显卡驱动的协同。硬件解码通过VA-API或VDPAU将解码任务交给GPU,能显著降低CPU占用,解决4K高码率视频卡顿问题。对于Ubuntu用户,合理配置解码环境与播放器,可流畅播放HEVC、多音轨及ASS特效字幕视频。无论是日常观影、番剧追更还是家庭影院场景,选择合适的播放器并正确启用硬解,都是提升体验的关键。本文围绕Ubuntu平台,详解VLC、mpv、SMPlayer等播放器的安装、硬解配置与常见问题排查,帮助你在Linux上获得流畅的本地视频播放

weixin_33801856的博客 504

二叉树的右视图,力扣

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

m0_70437378的博客 1053

Xshell 连接 kali 虚拟机教程

启动ssh服务,启动后重新查看ssh服务状态,如下图active(running)正常。至此便可以直接使用Xshell登录kali系统了。至此虚拟机已经可以上网。-查看ssh服务状态。

qq_40726937的博客 2219

力扣Leetcode 199. 二叉树的右视图

199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- ???? 思...

CoderZ's blog 370

用Multisim复刻经典收音机:从零搭建超外差中波调幅接收机(附仿真源文件)

本文详细介绍了如何使用Multisim软件从零搭建超外差中波调幅接收机,复刻经典收音机的设计过程。通过模块化搭建、稳定性优化和增益分配等实战指南,帮助读者掌握超外差架构的核心技术,并附赠仿真源文件供实践参考。

weixin_28744423的博客 472

关于VS2019调试问题:进程已退出,代码为-1073741819(已解决)

关于VS2019调试问题:进程已退出,代码为-1073741819(已解决) 详情:上一篇发了这个进程问题,在我翻阅了《c语言程序设计第四版》和《算法与数据结构》两本书对照代码加上调试终于找到了解决方法 解决方法: 首先找到项目的源文件右击找到属性 然后选择从生成中排除选择是! 重新生成解决方案,发现代码问题: 之前的代码: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include &lt

qq_51553982的博客 1万+

Leetcode力扣第199题——二叉树的右视图

题目描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- BFS(广度优先搜索)...

a624193873的博客 798

VS2022 中 std::mutex 静态初始化陷阱:一次诡异崩溃的排查记录

VS2022中使用std::mutex时遇到的静态初始化陷阱问题。该问题源于VS2022 17.4版本为std::mutex添加constexpr支持后,全局静态初始化可能导致系统资源未就绪时锁失效或崩溃。文章分析了问题现象、影响范围,并提供了解决方案。最后给出了排查清单和核心建议

qq_34552942的博客 951

【LeetCode】二叉树的右视图

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

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1072

Rockchip MPP解码H264实战:从文件到YUV的完整流程解析

本文详细解析了在Rockchip平台上使用MPP(Media Process Platform)硬件解码H264视频文件并输出YUV数据的完整流程。通过实战代码示例,深入讲解了MPP解码器的初始化、数据包投递、非阻塞模式下的双循环控制以及YUV帧的提取与保存等核心步骤,并提供了环境搭建、编译运行和常见问题排查指南,帮助开发者高效利用硬件加速进行视频处理。

life6的博客 478

2026美赛数学建模竞赛 MCM C题:与星共舞的数据 问题一 粉丝投票估计模型 详细解题思路和代码

2026美赛数学建模竞赛 MCM C题:与星共舞的数据 问题一 粉丝投票估计模型 详细解题思路和代码.。开发一个(或多个)数学模型,用于估算每位选手在他们参赛的各周的粉丝投票数(这是未知且严格保密的)。您的模型是否能正确估算出导致每周淘汰结果一致的粉丝投票数?提供一致性度量。您估算出的粉丝投票总数有多少确定性?这种确定性对于每位选手/每周是否总是相同?为您的估算提供确定性度量。

YOLO 852

LeetCode 199. 二叉树的右视图

使用广度优化搜索或深度优化搜索的思想,解决《199. 二叉树的右视图》问题

"大梦三千秋的博客 948

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致是财务顾问和会计人员最常遇到的棘手问题之一

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致问题主要源于四大原因:1)违规手工记账(最常见),直接通过总账录入资产科目凭证而未通过资产模块;2)折旧运行问题,包括执行失败、跨年度问题或配置冲突;3)主数据与配置错误,如科目确定或折旧键设置不当;4)业务流程遗漏,如单据未生成凭证或汇率差异。解决方案包括运行对账报表、检查凭证来源、补跑折旧及核对配置。关键预防措施是坚持"资产模块发起→自动生成凭证→总账审核"的标准流程。

金牌架构师 427

199. 二叉树的右视图【 力扣(LeetCode) 】

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

yyh520025的博客 976

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode199——二叉树的右视图

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/binary-tree-right-side-view/description/ 题目描述: 知识点:层序遍历 思路:二叉树的层序遍历 要取得二叉树的右视图,只需层序遍历二叉树,取每一层的最后一个节点即可。...

清风阁 590

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

力扣199-二叉树的右视图-C++

一、运行结果 二、题目 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:[1,2,3,null,5,null,4] 输出:[1,3,4] 示例 2: 输入:[1,null,3] 输出:[1,3] 示例 3: 输入:[] 输出:[] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-right-side-view 三、...

TLJava^v^的博客 817

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

力扣第199题“二叉树的右视图”

本文详细解读了力扣第199题“二叉树的右视图”,通过使用广度优先搜索(BFS)和深度优先搜索(DFS)高效地解决了这一问题,并提供了详细的解释和模拟面试问答。希望读者通过本文的学习,能够在力扣刷题的过程中更加得心应手。

10年数据\经营分析经验,现任大厂数据分析负责人 1170

二叉树的右视图 力扣199

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

qq_65031432的博客 484

LeetCode - 199. 二叉树的右视图

DFS访问顺序(先右后左)是:1 -> 3 -> 6 -> 2 -> 5 -> 4。右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。最终result=[1,3,6],正好是树的右视图。如果当前节为空,直接返回检查当前深度是否等于结果数组的长度如果是,说明这是当前深度第一个被访问的节点,将其值加入结果数组如果不是,说明该深度已经有节点被加入结果,不做操作先递归访问右子树(深度+1),再递归访问左子树(深度+1)

2402_83315537的博客 1201

力扣-199.二叉树的右视图

树的题目变化不多,想到层序遍历就容易了。

weixin_46878941的博客 252

Leetcode--二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入:[1,2,3,null,5,null,4] 输出:[1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- 思路 可以发现,在按照中、右、左的顺序递归遍历二叉树时,每个深度中第一次出现的节点组成右视图 /** * Definition...

半途行走的博客 469
上一篇: 【Linux】僵尸进程|wait&waitpid函数详解
下一篇: 【力扣】重排链表
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值