Binary Search tree

by Nidhi Patel

JavaScript

class Node {
  constructor(value) {
    this.right = null;
    this.left = null;
    this.value = value;
  }
}

class BST {
  constructor() {
    this.root = null;
  }
  insert(value) {
    let treeNode = new Node(value);
    if (!this.root) {
      this.root = treeNode
      return this;
    } else {
      let currentNode = this.root;
      while (true) {
        if (value < currentNode.value) {
          if (!currentNode.left) {
            currentNode.left = treeNode;
            return this;
          }
          currentNode = currentNode.left;
        } else {
          if (!currentNode.right) {
            currentNode.right = treeNode;
            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 false;
  }
}

const tree = new BST();
tree.insert(9);
tree.insert(4);
tree.insert(9);
tree.insert(3);
tree.insert(12);
tree.insert(14);
tree.insert(10);
tree.lookup(3);
console.log(tree);