Created
November 5, 2020 20:51
-
-
Save berellevy/e8cf3f716a01ea5cf2a0bcc60cca7a36 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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