Skip to content

Commit 6546456

Browse files
Add 'Binary Tree Right Side View'
1 parent 3593628 commit 6546456

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ A collection of LeetCode solutions
1010

1111
[Binary Tree Level Order Traversal](./src/binary_tree_level_order_traversal.py)
1212

13+
[Binary Tree Right Side View](./src/binary_tree_right_side_view.py)
14+
1315
[Climbing Stairs](./src/climbing_stairs.py)
1416

1517
[Coin Change](./src/coin_change.py)

src/binary_tree_right_side_view.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""
2+
199. Binary Tree Right Side View
3+
4+
https://leetcode.com/problems/binary-tree-right-side-view
5+
6+
NOTES
7+
* If you haven't already, solve 'Binary Tree Level Order Traversal'. Using
8+
the breadth-first approach, the solution is trivial.
9+
"""
10+
11+
from collections import deque
12+
13+
from src.classes import TreeNode
14+
15+
16+
class Solution:
17+
def rightSideView(self, root: TreeNode | None) -> list[int]:
18+
if not root:
19+
return []
20+
21+
nodes: list[int] = []
22+
queue: deque[TreeNode] = deque([root])
23+
24+
while queue:
25+
width = len(queue)
26+
for i in range(width):
27+
curr = queue.popleft()
28+
if i == width - 1:
29+
nodes.append(curr.val)
30+
if curr.left:
31+
queue.append(curr.left)
32+
if curr.right:
33+
queue.append(curr.right)
34+
35+
return nodes
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
199. Binary Tree Right Side View
3+
4+
https://leetcode.com/problems/binary-tree-right-side-view
5+
"""
6+
7+
from unittest import TestCase
8+
9+
from src.binary_tree_right_side_view import Solution
10+
from tests.utils import create_binary_tree_from_list
11+
12+
13+
class TestSolution(TestCase):
14+
def test_1(self):
15+
exp = [1, 3, 4]
16+
root = create_binary_tree_from_list([1, 2, 3, None, 5, None, 4])
17+
assert Solution().rightSideView(root) == exp
18+
19+
def test_2(self):
20+
exp = [1, 3, 4, 5]
21+
root = create_binary_tree_from_list([1, 2, 3, 4, None, None, None, 5])
22+
assert Solution().rightSideView(root) == exp
23+
24+
def test_3(self):
25+
exp = [1, 3]
26+
root = create_binary_tree_from_list([1, None, 3])
27+
assert Solution().rightSideView(root) == exp
28+
29+
def test_4(self):
30+
exp = []
31+
root = create_binary_tree_from_list([])
32+
assert Solution().rightSideView(root) == exp

0 commit comments

Comments
 (0)