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;
 ...