leetcode_199 二叉树的右视图

55 阅读1分钟

要求

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

示例 1:

image.png

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

示例 2:

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

示例 3:

输入: []
输出: []

核心代码

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def rightSideView(self, root: TreeNode) -> List[int]:
        if not root:
            return []
        
        next_layer = [root]
        result = [root.val]
        while next_layer:
            new_next_layer = []

            for node in next_layer:
                if not node:
                    continue
                if node.left:
                    new_next_layer.append(node.left)
                if node.right:
                    new_next_layer.append(node.right)
            if new_next_layer:
                next_layer = new_next_layer
                result.append(new_next_layer[-1].val)
            else:
                break
        return result

image.png

解题思路:还是树的层次遍历,我们可以得到每一层的所有数据,在一层数据的最右侧就是右视图能看到的数字,遍历每一层,得到每一层的最后一个数字,就是我们要的右视图。