Skip to content

Commit 02b3c60

Browse files
committed
Added check for deletion of only root noot having no children
Added check for lookup of empty BST
1 parent a2589bc commit 02b3c60

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

src/binary-search-tree/binary-search-tree.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,13 @@ export class BST {
102102
// when the node has no children or when its a leaf
103103
// then simply delete the node
104104
if (!findNode.currentNode.left && !findNode.currentNode.right) {
105-
const direction = findNode.parentNode.key > val ? 'left' : 'right';
106-
findNode.parentNode[direction] = null;
105+
//check if the node is the root node
106+
if (findNode.parentNode === null) {
107+
this.root = null;
108+
} else {
109+
const direction = findNode.parentNode.key > val ? 'left' : 'right';
110+
findNode.parentNode[direction] = null;
111+
}
107112
this[length]--;
108113
}
109114
// case 2
@@ -155,14 +160,16 @@ export class BST {
155160
lookup(val) {
156161
let response = { hasVal: false, currentNode: null, parentNode: null };
157162
const lookRecursively = (node = this.root, parent = null) => {
158-
if (node.key === val) {
159-
response.hasVal = true;
160-
response.currentNode = node;
161-
response.parentNode = parent;
162-
} else if (node.left && node.key > val) {
163-
lookRecursively(node.left, node);
164-
} else if (node.right && node.key < val) {
165-
lookRecursively(node.right, node);
163+
if (node) {
164+
if (node.key === val) {
165+
response.hasVal = true;
166+
response.currentNode = node;
167+
response.parentNode = parent;
168+
} else if (node.left && node.key > val) {
169+
lookRecursively(node.left, node);
170+
} else if (node.right && node.key < val) {
171+
lookRecursively(node.right, node);
172+
}
166173
}
167174
}
168175

0 commit comments

Comments
 (0)