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

示例:

输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释: 1 <---
/ \
2 3 <---
\ \
5 4 <---

拿到这题,一开始的思路是强行遍历右节点,后来发现如果右节点的深度低于左节点时,左节点也是输于右视图的一部分,答案错误。然后参考了相关做法,发现正确的做法应该是层次遍历,判断出每一层的所有内容,然后取最右边的值加入答案。直到最后一个层次遍历完毕。

由于百度到的答案都是使用C++实现的,他们先入左节点再入右节点,C++的队列定义可以取队首或者队尾的内容,这样可以方便取出最右节点。但是JAVA中只能取队首的内容。于是我将右节点先入队,直接取队首,就是答案。

并且,需要注意层次的关系,不要混乱了层次。

代码如下:

 class Solution {
List<Integer> ans=new LinkedList<>(); public List<Integer> rightSideView(TreeNode root) {
Queue<TreeNode> queue=new LinkedList<>();
if(root==null)
return ans;
queue.add(root);
while(!queue.isEmpty())
{
Queue<TreeNode> quetmp=new LinkedList<>();
ans.add(queue.peek().val);
while(!queue.isEmpty())
{
TreeNode nodetmp=queue.poll();
if(nodetmp.right!=null)
quetmp.add(nodetmp.right);
if(nodetmp.left!=null)
quetmp.add(nodetmp.left);
}
queue=quetmp;
}
return ans;
} }

领扣(LeetCode)二叉树的右视图 个人题解的更多相关文章

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

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

  2. Leetcode之深度优先搜索(DFS)专题-199. 二叉树的右视图(Binary Tree Right Side View)

    Leetcode之深度优先搜索(DFS)专题-199. 二叉树的右视图(Binary Tree Right Side View) 深度优先搜索的解题详细介绍,点击 给定一棵二叉树,想象自己站在它的右侧 ...

  3. LeetCode 199. 二叉树的右视图(Binary Tree Right Side View)

    199. 二叉树的右视图 199. Binary Tree Right Side View 题目描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. Giv ...

  4. Java实现 LeetCode 199 二叉树的右视图

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

  5. 【二叉树-BFS系列1】二叉树的右视图、二叉树的锯齿形层次遍历

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

  6. leetcode.199二叉树的右视图

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

  7. LeetCode 199. 二叉树的右视图(Binary Tree Right Side View)

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

  8. LeetCode——199. 二叉树的右视图

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

  9. LeetCode 199 二叉树的右视图

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

随机推荐

  1. Hash Table Implementation in C++

    对于字符串,所用的hash函数为: size_t _Hash_bytes(const void* ptr, size_t len, size_t seed) { static const size_t ...

  2. Redis 消息队列的实现

    概述 Redis实现消息队列有两种形式: 广播订阅模式:基于Redis的 Pub/Sub 机制,一旦有客户端往某个key里面 publish一个消息,所有subscribe的客户端都会触发事件 集群订 ...

  3. Topaz ReMask 5抠图神器

    Topaz ReMask 5抠图神器 与Photoshop相比,ReMask不需要繁琐的刷子工作来获得高质量的面膜.您只需粗略勾勒出主题并按"计算"即可. 在Photoshop中制 ...

  4. 树莓派apt报错:E: '\Release' 这个值对 APT::Default-Release 是无效的,因为在源里找不到这样的发行

    E: '\jessie' 这个值对 APT::Default-Release 是无效的,因为在源里找不到这样的发行 开始尝试了各种方法, 换apt源, 改/etc/apt/apt.conf.d/10d ...

  5. ArcGIS制作地形图【详细步骤】

    结果图: 详细步骤: 一.在ArcSence中加载带有投影坐标系的dem数据 Dem的属性设置为下图可有上面的效果. 二.提取栅格范围 找到工具[3D Analyst][转换][栅格范围]双击打开设置 ...

  6. vue-music 跨域获取QQ音乐歌曲播放源

    这个问题困扰了我很久,一直获取不到正确的播放源,qq对这块限制更加严格了 按照之前老师在视频中的写法,已经不能获取到播放源了 下面来分析一下正确的播放源url:http://dl.stream.qqm ...

  7. SpringCloud之Feign和Ribbon的选择(五)

    Ribbon Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器它可以在客户端配置 ribbonServerList(服务端列表),然后轮询请求以实现均衡负载它在联合 Eureka 使 ...

  8. 详细讲解IPython

    ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数.学习ipython ...

  9. python3 range 倒序

    话不多说上代码,要求简单,从100到1遍历操作. //第三个参数表示的是100所有进行的操作,每次加上-1,直到0 for i in range(100,0,-1): print(i)

  10. 配置Spring Boot 跨域后PUT,DELETE方法出现403Forbidden

    配置类 @Configuration public class CorsConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { ...