Skip to content

Commit 309f965

Browse files
author
Gonzalo Diaz
committed
[BUGFIX] [Hacker Rank] Interview Preparation Kit: Search: Swap Nodes [Algo]. Flatten tree without callback.
1 parent dcec7c8 commit 309f965

File tree

1 file changed

+16
-26
lines changed

1 file changed

+16
-26
lines changed

src/hackerrank/interview_preparation_kit/search/swap_nodes_algo.js

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,6 @@ export function callbackCollectNodes(root, collect, level) {
2222
}
2323
}
2424

25-
export function callbackCollectFlat(root, collect, level) {
26-
const _level = 0 * level; // set a unique key to use dict as a list
27-
if (root) {
28-
if (collect?.[_level] === undefined) {
29-
// eslint-disable-next-line no-param-reassign
30-
collect[_level] = [root];
31-
} else {
32-
collect[_level].push(root);
33-
}
34-
}
35-
}
36-
3725
export function traverseInOrderCollector(root, collect, level, callbackFn) {
3826
if (root?.left !== null) {
3927
traverseInOrderCollector(root?.left, collect, level + 1, callbackFn);
@@ -91,24 +79,26 @@ export function buildTree(indexes) {
9179
}
9280

9381
export function flatTree(root) {
94-
let nodeCollector = {};
82+
const nodeCollector = [];
9583

96-
nodeCollector = traverseInOrderCollector(
97-
root,
98-
nodeCollector,
99-
__INITIAL_LEVEL__,
100-
callbackCollectFlat
101-
);
84+
function traverseInOrderFlat(node) {
85+
if (node?.left !== null) {
86+
traverseInOrderFlat(node?.left);
87+
}
10288

103-
const lastLevel = parseInt(
104-
Object.keys(nodeCollector)
105-
.sort((a, b) => parseInt(b, __RADIX__) - parseInt(a, __RADIX__))
106-
.shift(),
107-
__RADIX__
108-
);
89+
if (node) {
90+
nodeCollector.push(node);
91+
}
92+
93+
if (node?.right !== null) {
94+
traverseInOrderFlat(node?.right);
95+
}
96+
}
97+
98+
traverseInOrderFlat(root);
10999

110100
const output = [];
111-
nodeCollector[lastLevel].forEach((node) => {
101+
nodeCollector.forEach((node) => {
112102
output.push(node.data);
113103
});
114104

0 commit comments

Comments
 (0)