Quick actions

cmd+k|ctrl+k

Navigation

Languages

my first BST implementation

Snippet info

Language

JavaScript

Visibility

public

Author

goodnewsj62

Created

2025-02-24T16:41:01.525512Z

Updated

2025-02-24T17:31:35.118191Z

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

class BinarySearchTree {
    constructor(){
        this.root = null;
    }
    
    insert(value){
        console.log(value)
        const node =  new Node(value);
        if(!this.root){
            this.root =  node;
            return;
        }
        
        
        
        let currentNode =  this.root;
        
        
        while(true){
            if (currentNode.value >= value){
                if(currentNode.left){
                    currentNode =  currentNode.left;
                }else{
                    currentNode.left =  node;
                    break;
                }
            }else{
                if(currentNode.right){
                    currentNode =  currentNode.right;
                }else{
                    currentNode.right = node;
                    break;
                }
            }
        }
        
        return this;
    }
    
    lookup (value){
        let currentNode =  this.root;
        
        while(!!currentNode){
            if(value ===  currentNode.value){
                return true
            }
            
            if(value <  currentNode){
                currentNode =  currentNode.left;
            }else{
                currentNode =  currentNode.right;
            }
            
        }
    }
}





const tree = new BinarySearchTree();
tree.insert(9);
tree.insert(4);
tree.insert(6);
tree.insert(20);
tree.insert(170);
tree.insert(15);
tree.insert(1);
// tree.remove(170);
console.log(JSON.stringify(traverse(tree.root)));
console.log(tree.lookup(20));


function traverse(node) {
  const tree = { value: node.value };
  tree.left = node.left === null ? null : traverse(node.left);
  tree.right = node.right === null ? null : traverse(node.right);
  return tree;
}
INFO