Skip to content

Commit 4b7ef7a

Browse files
author
Gonzalo Diaz
committed
[BIG REFACTOR] [Hacker Rank] Interview Preparation Kit: Search: Swap Nodes [Algo]. Transition to remove callbacks.
1 parent 309f965 commit 4b7ef7a

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ export function traverseInOrderCollector(root, collect, level, callbackFn) {
3939
export function buildTree(indexes) {
4040
const indexesCopy = [...indexes];
4141
const root = new Node(__ROOT_VALUE__);
42-
let nodeCollector = {};
42+
let currentLevel = 1;
43+
const nodeCollector = {};
44+
nodeCollector[currentLevel] = [root];
4345

4446
while (indexesCopy.length > 0) {
4547
nodeCollector = {};
@@ -60,19 +62,32 @@ export function buildTree(indexes) {
6062

6163
const levelSize = Math.min(
6264
indexesCopy.length,
63-
nodeCollector[lastLevel]?.length
65+
nodeCollector[currentLevel]?.length
6466
);
67+
68+
const nextLevel = currentLevel + 1;
69+
70+
if (levelSize > 0) {
71+
nodeCollector[nextLevel] = [];
72+
}
73+
6574
for (let i = 0; i < levelSize; i++) {
66-
const currentNode = nodeCollector[lastLevel][i];
75+
const currentNode = nodeCollector[currentLevel][i];
6776
const newElement = indexesCopy.shift();
6877

6978
if ((newElement?.[0] ?? __LEAF_VALUE__) !== __LEAF_VALUE__) {
7079
currentNode.left = new Node(newElement[0]);
80+
nodeCollector[nextLevel].push(currentNode.left);
7181
}
7282
if ((newElement?.[1] ?? __LEAF_VALUE__) !== __LEAF_VALUE__) {
7383
currentNode.right = new Node(newElement[1]);
84+
nodeCollector[nextLevel].push(currentNode.right);
7485
}
7586
}
87+
88+
if (nodeCollector[nextLevel].length > 0) {
89+
currentLevel = nextLevel;
90+
}
7691
}
7792

7893
return root;

0 commit comments

Comments
 (0)