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

news/2024/11/29 11:50:50/

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

示例 1:

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

示例 2:

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

示例 3:

输入: []
输出: []

实现方法:

    1.使用递归函数,传递当前节点和当前的深度。
    2.检查当前深度是否已经在结果列表中有对应的值,如果没有,则添加当前节点值(这意味着这是该层级首次访问到的节点,从右边看过去首先看到的节点)。
    3.优先递归访问右子节点,然后是左子节点,这样可以保证右侧节点优先被处理。

作者:GoAhead
链接:. - 力扣(LeetCode)
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码:

/*** 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> res;int depth = 0;vector<int> rightSideView(TreeNode* root) {dfs(root,depth);return res;}void dfs(TreeNode * root , int depth) { 
// 如果当前节点所在深度还没有出现在res里,说明在该深度下当前节点是第一个被访问的节点,因此将当前节点加入res中。if (root == nullptr){return;}if (depth == res.size()){res.push_back(root->val);}depth++;// 先访问 当前节点,再递归地访问 右子树 和 左子树。dfs(root->right,depth);dfs(root->left,depth);}
};

http://www.ppmy.cn/news/1446195.html

相关文章

代码随想录算法训练营第二十六天||39. 组合总和、40.组合总和II、131.分割回文串

文章目录 一、39. 组合总和 思路 二、40.组合总和II 思路 三、131.分割回文串 思路 一、39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取…

Java中的public,private,protect,默认这几个访问修饰符的范围和概念

在Java中&#xff0c;public、private和protected是访问修饰符&#xff0c;它们决定了类、方法或变量的访问级别。这些访问修饰符有助于实现封装&#xff0c;这是面向对象编程的四大基本特性之一。 public&#xff1a;这是最高级别的访问修饰符。被public修饰的类、方法或变量…

c# ?? 、?.、??=、?[]运算符的使用

在 C# 中存在一些特殊的运算符&#xff0c;它们简化了代码的编写&#xff0c;主要用于处理空值&#xff08;null&#xff09;或简化成员访问。以下是一些常用的这类运算符&#xff1a; ?? - Null 合并运算符 Null 合并运算符 ?? 在左侧的操作数不为 null 时返回左侧的操作…

java 密码SHA-2加密,springboot-bcrypt加密

原理底层啥的就不说了&#xff0c;小白的我只注重使用 SHA-2加密 // 生成随机盐public static String generateSalt() {SecureRandom random new SecureRandom();byte[] salt new byte[16];random.nextBytes(salt);return Base64.getEncoder().encodeToString(salt);}// 哈希…

JS从入门到精通

1.JS概述 window.sessionStorage.setItem("flag", flag);原生JS也可以存SessionStorage 尚硅谷的视频教程&#xff1a; 不用在服务端&#xff0c;在客户端就验证了。 解释型VS编译型&#xff1b;事件驱动&#xff1b;客户端的脚本语言&#xff1b;脚本语言&#xff0…

【酱浦菌-爬虫项目】爬取学术堂论文信息

1. 首先&#xff0c;代码定义了一个名为 url 的变量&#xff0c;它是一个包含三个网址的集合&#xff08;或者说是一个集合的字典&#xff09;。这些网址分别是&#xff1a; - ‘http://www.xueshut.com/lwtimu/127966.html’ - ‘http://www.xueshut.com/lwtimu/12…

2024.4.29 —— LeetCode 高频题复盘

目录 56. 合并区间124. 二叉树中的最大路径和19. 删除链表的倒数第 N 个结点72. 编辑距离93. 复原 IP 地址1143. 最长公共子序列94. 二叉树的中序遍历82. 删除排序链表中的重复元素 II704. 二分查找199. 二叉树的右视图 56. 合并区间 题目链接 class Solution:def merge(self,…

物联网应用技术综合实训室解决方案

一、背景 随着物联网技术的快速发展和广泛应用&#xff0c;物联网产业已经成为新的经济增长点&#xff0c;对于推动产业升级、提高社会信息化水平具有重要意义。因此&#xff0c;培养具备物联网技术应用能力的高素质人才成为了迫切需求。 传统的教育模式往往注重理论教学&…