Skip to content

Commit 409f85c

Browse files
committed
fix: missing case of 2 delete Node with 2 childs
1 parent 3d48038 commit 409f85c

File tree

1 file changed

+29
-27
lines changed

1 file changed

+29
-27
lines changed

src/_DataStructures_/Trees/BST/index.js

+29-27
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ class BinarySearchTree {
104104
// there is a left sub-tree
105105
return root.leftChild;
106106
}
107+
// the root contain 2 childs
108+
const minRightNode = this.findMinNode(root.rightChild);
109+
// eslint-disable-next-line no-param-reassign
110+
root.value = minRightNode.value;
111+
// eslint-disable-next-line no-param-reassign
112+
root.rightChild = this.delete(root.rightChild, minRightNode.data);
113+
return root;
107114
}
108115
return root;
109116
}
@@ -150,41 +157,36 @@ class BinarySearchTree {
150157
}
151158
}
152159

153-
// const bst = new BinarySearchTree(6);
154-
// console.log(bst.root);
155-
// bst.add(4);
156-
// bst.add(9);
157-
// bst.add(2);
158-
// bst.add(5);
159-
// bst.add(8);
160-
// bst.add(12);
160+
const bst = new BinarySearchTree(6);
161+
console.log(bst.root);
162+
bst.add(4);
163+
bst.add(9);
164+
bst.add(2);
165+
bst.add(5);
166+
bst.add(8);
167+
bst.add(12);
161168

162-
// console.log(bst.root);
169+
console.log(bst.root);
163170

164-
// const preorder = bst.traversePreorder();
165-
// console.log('Preorder Traversal - ', preorder);
171+
const preorder = bst.traversePreorder();
172+
console.log('Preorder Traversal - ', preorder);
166173

167-
// const inorder = bst.traverseInorder();
168-
// console.log('Inorder Traversal - ', inorder);
174+
const inorder = bst.traverseInorder();
175+
console.log('Inorder Traversal - ', inorder);
169176

170-
// const postorder = bst.traversePostorder();
171-
// console.log('Postorder Traversal - ', postorder);
177+
const postorder = bst.traversePostorder();
178+
console.log('Postorder Traversal - ', postorder);
172179

173-
// const search = 18;
174-
// console.log(`Search for ${search}`, bst.searchFor(search));
180+
const search = 18;
181+
console.log(`Search for ${search}`, bst.searchFor(search));
175182

176-
// const minNode = bst.findMinimum();
177-
// console.log('Minimum value =>', minNode);
183+
const minNode = bst.findMinimum();
184+
console.log('Minimum value =>', minNode);
178185

179-
// bst.remove(8);
180-
// console.log(bst.traversePreorder());
181-
// console.log(bst.root);
186+
bst.remove(4);
187+
console.log(bst.traversePreorder());
182188

183-
// bst.remove(5);
184-
// console.log(bst.traversePreorder());
185-
186-
// bst.remove(4);
187-
// console.log(bst.traversePreorder());
189+
console.log(bst.root);
188190

189191
// bst.remove(2);
190192
// console.log(bst.traversePreorder());

0 commit comments

Comments
 (0)