Binary Search Trees

by Kaeden

JavaScript

var node = function (key, val) {
    var value = val;
    var key = key;

    var left = null;
    var right = null;

    var insert = function (newKey, newVal) {
        if (newKey == key) {
            return;
        }

        var newNode = new node(newKey, newVal);

        if (newKey < key) {
            if (left) {
                left.insert(newKey, newVal);
            } else {
                left = newNode;
            }
        } else {
            if (right) {
                right.insert(newKey, newVal);
            } else {
                right = newNode;
            }
        }
    };

    var printInOrder = function () {

        if (left) {
            left.printInOrder();
        }

        console.log(value);

        if (right) {
            right.printInOrder();
        }
    };

    var get = function (searchKey) {
        if (key == searchKey) {
            return value;
        }
        var result;
        if (searchKey < key) {
            if (left && (result = left.get(searchKey))) {
                return result;
            }
        } else {
            if (right && (result = right.get(searchKey))) {
                return result;
            }
        }

        return null;
    };

    return {
        insert: insert,
        getValue: value,
        printInOrder: printInOrder,
        get: get
    };

};

var tree = new node(25, "twenty-five");

tree.insert(17, "seventeen");
tree.insert(19, "nineteen");
tree.insert(27, "twenty-seven");
tree.insert(26, "twenty-six");
tree.insert(26, "twenty-six");
tree.insert(3, "three");

http: //jsfiddle.net/PsfHY/1/

tree.printInOrder();

var result = tree.get(25);
console.log(result);