Quick actions

cmd+k|ctrl+k

Navigation

Languages

Binary Search Tree

Snippet info

Language

JavaScript

Visibility

public

Author

saurabhtiwari75844

Created

2023-03-13T16:14:30.10348Z

Updated

2023-03-15T13:02:18.573867Z


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

class BinarySearchTree {
    constructor() {
        this.root=null;
    }
    
    insert(value) {
        const newNode = new Node(value);
        if(this.root === null) {
            this.root = newNode;
        } else {
            let currentNode = this.root;
            while(true) {
                if(value < currentNode.value) {
                    if(!currentNode.left) {
                        currentNode.left = newNode;
                        return this
                    }
                    currentNode = currentNode.left;
                } else {
                    if(!currentNode.right) {
                        currentNode.right = newNode;
                        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 BinarySearchTree();
tree.insert(9);
tree.insert(4);
tree.insert(6);
tree.insert(20);
tree.insert(170);
tree.insert(15);
tree.insert(1);
tree.lookup(1);
JSON.stringify(traverse(traverse(tree.root)));
console.log(tree);

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