Skip to content

Commit 5415140

Browse files
author
Gonzalo Diaz
committed
[BUGFIX] [Hacker Rank] Interview Preparation Kit: Search: Swap Nodes [Algo]. 1) Avoid mutating input using a copy of the list. 2) reset collector for each traverse loop. 3) sort keys to find "last level".
1 parent 817e4ed commit 5415140

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,21 +67,23 @@ def traverse_in_order_collector(
6767

6868
def build_tree(indexes: List[List[int]]) -> Node:
6969

70+
indexes_copy = indexes[:]
7071
root: Node = Node(__ROOT_VALUE__)
71-
node_collector: Dict[int, list[Node]] = {}
72+
node_collector: Dict[int, list[Node]]
7273

73-
while len(indexes) > 0:
74+
while len(indexes_copy) > 0:
75+
node_collector = {}
7476
traverse_in_order_collector(
7577
root,
7678
node_collector,
7779
__INITIAL_LEVEL__,
7880
callback_collect_nodes)
7981

80-
last_level: int = list(node_collector)[-1]
82+
last_level: int = sorted(list(node_collector))[-1]
8183

82-
for i in range(0, min(len(indexes), len(node_collector[last_level]))):
84+
for i in range(0, min(len(indexes_copy), len(node_collector[last_level]))):
8385
current_node: Node = node_collector[last_level][i]
84-
new_element: List[int] = indexes.pop(0)
86+
new_element: List[int] = indexes_copy.pop(0)
8587

8688
if new_element[0] != -1:
8789
current_node.left = Node(new_element[0])

0 commit comments

Comments
 (0)