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

embedded/2024/11/20 21:41:32/

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


199. 二叉树的右视图

一、题目描述

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

二、测试用例

示例 1:

在这里插入图片描述

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

示例 2:

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

示例 3:

输入: []
输出: []

提示:

二叉树的节点个数的范围是 [0,100]
-100 <= Node.val <= 100 

三、解题思路

  1. 基本思路:
      基本就是暴力了,深度搜索或者广度搜索都可以,不过广度搜索好理解一点;
  2. 具体思路:
    • 使用队列进行广度搜索
      • 弹出队首元素,如果左右子树非空,则将左右子树压入队尾;同时记录下一层节点个数;
      • 判断当前层是否结束,结束则将弹出的队首元素压入答案中;
    • 返回答案。

四、参考代码

时间复杂度: O ( n ) \Omicron(n) O(n)【n 是节点数】
空间复杂度: O ( n ) \Omicron(n) O(n)【最坏情况下,队列的元素占树的一半】

/*** 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) {if (!root)return {};vector<int> ans;queue<TreeNode*> bfs;int cur, next = 0;bfs.push(root);cur = 1;while (bfs.size()) {TreeNode* t = bfs.front();bfs.pop();cur--;if (t->left) {bfs.push(t->left);next++;}if (t->right) {bfs.push(t->right);next++;}if (cur == 0) {cur = next;next = 0;ans.push_back(t->val);}}return ans;}
};

http://www.ppmy.cn/embedded/139183.html

相关文章

基于 Python Django 的二手房间可视化系统分析

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

AI工业大模型报告:体系架构、关键技术与典型应用

研究意义 随着新一代人工智能的发展, 大模型&#xff08;如 GPT-4o 等&#xff09;凭借大规模训练数据、网络参数和算 力涌现出强大的生成能力、泛化能力和自然交互能力, 展现出改变工业世界的巨大潜力. 尽管大模型 已在自然语言等多个领域取得突破性进展, 但其在工业应用中的…

【Flutter 问题系列第 84 篇】如何清除指定网络图片的缓存

这是【Flutter 问题系列第 84 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 博文当前所用 Flutter SDK&#xff1a;3.24.3、Dart SDK&#xff1a;3.5.3&#xff0c;网络图片缓存用的插件 cached_network_image: 3.4.1&#xff0c;缓存的网络图像的存储和检索用…

第T8周:Tensorflow实现猫狗识别(1)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: &#xff08;二&#xff09;具体步骤 from absl.l…

传奇996_24——变量lua

1. 引擎变量 系统变量也叫全局变量&#xff0c;玩家变量也叫个人变量&#xff0c;个人标识也是个人变量 系统变量A&#xff0c;G&#xff0c;I 介绍&#xff1a; 个数一共1100个&#xff0c;分三种 &#xff08;1&#xff09;A字符型系统变量&#xff0c;重启服务器保存&am…

【经典】webpack和vite的区别?

‌Webpack和Vite在构建速度、开发体验和构建结果等方面存在显著区别。‌ Webpack是一个传统的构建工具&#xff0c;它在开发过程中需要对整个应用或大部分应用进行打包&#xff0c;这导致在大型项目中&#xff0c;打包过程非常耗时&#xff0c;尤其是在页面代码更改后&#xf…

K8S资源限制之ResourceQuota

ResourceQuota介绍 在K8S中&#xff0c;大部分资源都可以指定到一个名称空间下&#xff0c;因此可以对一个名称空间的计算资源&#xff0c;存储资源&#xff0c;资源数量等维度做资源限制。 如限制pod数量、svc数量&#xff0c;控制器数量&#xff0c;限制PVC请求的存储量 注…

Qml 模型-视图-代理(贰)之 代理(Delegate) 学习

使用模型与视图来定义用户界面时&#xff0c;代理在创建显示时扮演了大量的角色&#xff0c;在模型中的每个元素通过代理来实现可视化。 代理 使用键盘移动 高亮 效果 代码&#xff1a; 视图绑定的属性是 ListView.isCurrentItem: 这个属性是一个布尔值&#xff0c;标识这…