JSFiddle - React, Tailwind, and code Playground
by Shridhar Baddur
JavaScript
class Node {
constructor(value){
this.left = null;
this.right = null;
this.value = value;
}
}
class BinarySearchTree {
constructor(){
this.root = null;
this.size = 0;
}
insert(value){
const newNode = new Node(value);
if (this.root === null) {
this.root = newNode;
this.size++;
} else {
let currentNode = this.root;
while(true){
if(value < currentNode.value){
//Left
if(!currentNode.left){
currentNode.left = newNode;
this.size++;
return this;
}
currentNode = currentNode.left;
} else {
//Right
if(!currentNode.right){
currentNode.right = newNode;
this.size++;
return this;
}
currentNode = currentNode.right;
}
}
}
}
lookup(value){
if (!this.root) {
return false;
}
let currentNode = this.root;
while(currentNode){
if(value < currentNode.value){
currentNode = currentNode.left;
} else if(value > currentNode.value){
currentNode = currentNode.right;
} else if (currentNode.value === value) {
return currentNode;
}
}
return null
}
getNodeCount() {
return console.log(this.size);
}
printValues() {
if(!this.root) {
return false;
}
let valArr = [];
let currNode = this.root;
//
}
remove(value) {
if(!this.root) return null;
let currNode = this.root;
let parentNode = null;
while(true) {
if(value < currNode.value) {
parentNode = currNode;
currNode = currNode.left;
} else if(value > currNode.value) {
parentNode = currNode;
currNode = currNode.right;
} else if(value === currNode.value) {
// no child
if(currNode.left === null && currNode.right === null) {
if(currNode.value < parentNode.value) {
parentNode.left = null;
...