Skip to content

Instantly share code, notes, and snippets.

@berellevy
Created November 5, 2020 20:51
Show Gist options
  • Save berellevy/e8cf3f716a01ea5cf2a0bcc60cca7a36 to your computer and use it in GitHub Desktop.
Save berellevy/e8cf3f716a01ea5cf2a0bcc60cca7a36 to your computer and use it in GitHub Desktop.
remove(data) {
const findAndRemoveNode = function (startingNode, data) {
if (startingNode === null) {
return null;
}
if (data === startingNode.data) {
if (startingNode.left === null && startingNode.right === null) {
return null;
}
if (startingNode.left === null) {
return startingNode.right;
}
if (startingNode.right === null) {
return startingNode.right;
}
let tempNode = startingNode.right;
while (tempNode.left !== null) {
tempNode = tempNode.left;
}
startingNode.data = tempNode.data;
startingNode.right = findAndRemoveNode(
startingNode.right,
tempNode.data
);
return startingNode;
} else if (data < startingNode.data) {
startingNode.left = findAndRemoveNode(startingNode.left, data);
return startingNode;
} else {
startingNode.right = findAndRemoveNode(startingNode.right, data);
return startingNode;
}
};
this.root = findAndRemoveNode(this.root, data);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment