Binary Tree Right Side View
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:
- The number of nodes in the tree is in the range
[0, 100]
. -100 <= Node.val <= 100
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def getHeight(self, root):
if root:
return 1 + max(self.getHeight(root.left), self.getHeight(root.right))
return 0
def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
h = self.getHeight(root)
cols = (1 << h) - 1
res = [(None, float('-inf'))] * h
nodes = [(root, 0, 0, cols)]
while len(nodes) > 0:
curr, l, a, b = nodes.pop()
if curr:
i = (a + b) // 2
if i > res[l][1]:
res[l] = (curr.val, i)
nodes.append((curr.left, l + 1, a, i))
nodes.append((curr.right, l + 1, i, b))
return [r[0] for r in res]
Comments
Post a Comment