199二叉树的右视图

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

来源: https://leetcode-cn.com/problems/binary-tree-right-side-view/

法一: 自己的代码

构建一个队列,每次都从右边取值,用双层循环实现层序遍历.

# 执行用时 :32 ms, 在所有 python3 提交中击败了98.01% 的用户
# 内存消耗 :12.8 MB, 在所有 python3 提交中击败了100.00%的用户
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
from typing import List
class Solution:
    def rightSideView(self, root: TreeNode) -> List[int]:
        result = []
        if root is None:
            return []
        queue = []
        queue_next = []
        queue_next.append(root)
        while queue_next:
            queue = queue_next
            queue_next = []
            result.append(queue[0].val)
            while queue:
                a = queue.pop(0)
                if a.right:
                    queue_next.append(a.right)
                if a.left:
                    queue_next.append(a.left)
        return result

原文地址:https://www.cnblogs.com/xxswkl/p/12012557.html

时间: 2024-10-10 23:35:58

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

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<>(

LeetCode 199 二叉树的右视图

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

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