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:
[0, 100]
.-100 <= Node.val <= 100
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)