LeetCode Top Interview 150

199. Binary Tree Right Side View

Medium

Given the root of 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.

Example 1:

Input: root = [1,2,3,null,5,null,4]

Output: [1,3,4]

Example 2:

Input: root = [1,null,3]

Output: [1,3]

Example 3:

Input: root = []

Output: []

Constraints:

Solution

from typing import List, Optional

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: Optional[TreeNode]) -> List[int]:
        result = []
        self._recurse(root, 0, result)
        return result

    def _recurse(self, node: Optional[TreeNode], level: int, result: List[int]):
        if node is not None:
            if len(result) < level + 1:
                result.append(node.val)
            self._recurse(node.right, level + 1, result)
            self._recurse(node.left, level + 1, result)