199. 二叉树的右视图

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

示例:

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

   1            <---
 /   2     3         <---
 \       5     4       <---
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        if(root == null) return res;
        queue.add(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i = 0; i < size; i++){
                TreeNode node = queue.poll();
                if(i == size - 1) res.add(node.val);
                if(node.left != null) queue.add(node.left);
                if(node.right != null) queue.add(node.right);
            }
        }
        return res;
    }
}

执行用时 : 3 ms, 在Binary Tree Right Side View的Java提交中击败了51.57% 的用户

内存消耗 : 34.6 MB, 在Binary Tree Right Side View的Java提交中击败了0.00% 的用户

原文地址:https://www.cnblogs.com/Roni-i/p/10509910.html

时间: 2024-10-21 11:07:29

199. 二叉树的右视图的相关文章

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

199. 二叉树的右视图 199. Binary Tree Right Side View 题目描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom. LeetCode19

LeetCode 199 二叉树的右视图

题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / 2 3 <--- \ 5 4 <--- 解题思路: 层次遍历.每次记录每一层的最右边的那个节点,并输出.这里介绍一个非常好用的模板,这个板子可以用来求高度.某一层节点的个数.树的最大宽度等. 代码: 1 /** 2 * Definition for a binary tree

199二叉树的右视图

题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 来源: https://leetcode-cn.com/problems/binary-tree-right-side-view/ 法一: 自己的代码 构建一个队列,每次都从右边取值,用双层循环实现层序遍历. # 执行用时 :32 ms, 在所有 python3 提交中击败了98.01% 的用户 # 内存消耗 :12.8 MB, 在所有 python3 提交中击败了100.00%的用户 # Def

leetcode.199二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <--- 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-right-side-view著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 运用层次遍历,记录

领扣(LeetCode)二叉树的右视图 个人题解

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / 2 3 <--- \ 5 4 <--- 拿到这题,一开始的思路是强行遍历右节点,后来发现如果右节点的深度低于左节点时,左节点也是输于右视图的一部分,答案错误.然后参考了相关做法,发现正确的做法应该是层次遍历,判断出每一层的所有内容,然后取最右边的值加入答案.直到最后一个层次遍历完毕.

Java 二叉树遍历右视图-LeetCode199

题目如下: 题目给出的例子不太好,容易让人误解成不断顺着右节点访问就好了,但是题目意思并不是这样. 换成通俗的意思:按层遍历二叉树,输出每层的最右端结点. 这就明白时一道二叉树层序遍历的问题,用一个队列来处理,但是问题是怎么来辨别每层的最右端结点,我思考了半天,最后想出的办法是利用一个标记位,例如上面的例子: q代表队列,f代表标记结点,right代表记录的最右端结点 q: 1 flag right:{} q: flag 2 3 遇到标记位所以移动标记位,并将队头弹出的数据存起来如下 q: 2

【LeetCode-面试算法经典-Java实现】【117-Populating Next Right Pointers in Each Node(二叉树链接右指针II)】

[117-Populating Next Right Pointers in Each Node(二叉树链接右指针II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tree could be any binary tree? Would your previous solutio

【LeetCode-面试算法经典-Java实现】【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】

[116-Populating Next Right Pointers in Each Node(二叉树链接右指针)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } Populate each next pointer to point to its next

编程将二叉树(子女右兄弟链)转换为树然后将树转换为二叉树(直接修改) 非递归实现

将子女右兄弟链修改为普通树然后将普通树修改为子女右兄弟链,注意是在原树上直接进行修改,不是根据原树创建转换后的新树,为了操作方便,树指针域用vector表示 C++代码: 子女右兄弟链存在共享子树情形: 1 #include "stdafx.h" 2 #include <iostream> 3 #include <stack> 4 #include <vector> 5 #include <string> 6 #include <m