Skip to content

Commit 590ebb1

Browse files
committed
update: delete in BST
1 parent 807668c commit 590ebb1

File tree

1 file changed

+64
-17
lines changed

1 file changed

+64
-17
lines changed

src/_DataStructures_/Trees/BST/index.js

+64-17
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,31 @@ class BinarySearchTree {
8383
return false;
8484
}
8585

86+
delete(root, value) {
87+
if (root === null) {
88+
return root;
89+
}
90+
91+
if (value > root.value) {
92+
// eslint-disable-next-line no-param-reassign
93+
root.rightChild = this.delete(root.rightChild, value);
94+
} else if (value < root.value) {
95+
// eslint-disable-next-line no-param-reassign
96+
root.leftChild = this.delete(root.leftChild, value);
97+
} else {
98+
// found the node
99+
if (root.leftChild === null) {
100+
// there is a right sub-tree
101+
return root.rightChild;
102+
}
103+
if (root.rightChild === null) {
104+
// there is a left sub-tree
105+
return root.leftChild;
106+
}
107+
}
108+
return root;
109+
}
110+
86111
isEmpty() {
87112
return this.root === null;
88113
}
@@ -108,29 +133,51 @@ class BinarySearchTree {
108133
searchFor(value) {
109134
return this.search(this.root, value);
110135
}
136+
137+
remove(value) {
138+
return this.delete(this.root, value);
139+
}
111140
}
112141

113-
// const bst = new BinarySearchTree(6);
114-
// console.log(bst.root);
115-
// bst.add(4);
116-
// bst.add(9);
117-
// bst.add(2);
118-
// bst.add(5);
119-
// bst.add(8);
120-
// bst.add(12);
142+
const bst = new BinarySearchTree(6);
143+
console.log(bst.root);
144+
bst.add(4);
145+
bst.add(9);
146+
bst.add(2);
147+
bst.add(5);
148+
bst.add(8);
149+
bst.add(12);
150+
151+
console.log(bst.root);
152+
153+
const preorder = bst.traversePreorder();
154+
console.log('Preorder Traversal - ', preorder);
155+
156+
const inorder = bst.traverseInorder();
157+
console.log('Inorder Traversal - ', inorder);
158+
159+
const postorder = bst.traversePostorder();
160+
console.log('Postorder Traversal - ', postorder);
161+
162+
const search = 18;
163+
console.log(`Search for ${search}`, bst.searchFor(search));
164+
165+
bst.remove(8);
166+
console.log(bst.traversePreorder());
121167

122-
// console.log(bst.root);
168+
bst.remove(5);
169+
console.log(bst.traversePreorder());
123170

124-
// const preorder = bst.traversePreorder();
125-
// console.log('Preorder Traversal - ', preorder);
171+
bst.remove(4);
172+
console.log(bst.traversePreorder());
126173

127-
// const inorder = bst.traverseInorder();
128-
// console.log('Inorder Traversal - ', inorder);
174+
bst.remove(2);
175+
console.log(bst.traversePreorder());
129176

130-
// const postorder = bst.traversePostorder();
131-
// console.log('Postorder Traversal - ', postorder);
177+
bst.remove(9);
178+
console.log(bst.traversePreorder());
132179

133-
// const search = 18;
134-
// console.log(`Search for ${search}`, bst.searchFor(search));
180+
bst.remove(12);
181+
console.log(bst.traversePreorder());
135182

136183
module.exports = BinarySearchTree;

0 commit comments

Comments
 (0)