BST Stuff

by Andrew Poes

CSS

.print {
    position: relative;
    display: inline-block;
    background-color: black;
    color: white;
    font-family: Helvetica, Helvetica-Neue, sans-serif;
    font-weight: bold;
    font-size: 24px;
    letter-spacing: -1.5px;
    padding: 4px 8px;
}

body {
    background-color: #eeeeee;
}
}

JavaScript

var Node = function() {
    var data;
    var left;
    var right;
    Node.prototype.toString = function() {
        return "[Node " + this.data /*+ ", left=" + this.left.data + ", right=" + this.right.data*/ + "]";
    }
}

function Stack() {
    this.data = new Array();
	this.push = function(n) {
        if (n) {
	        this.data.push(n);
        }
    }
    this.pop = function() {
        return this.data.pop();
    }
    this.length = function() {
        return this.data.length;
    }
}

function Queue() {
    this.data = new Array();
	this.enqueue = function(n) {
        if (n) {
	        this.data.push(n);
        }
    }
    this.dequeue = function() {
        return this.data.shift();
    }
    this.length = function() {
        return this.data.length;
    }
}

$(document).ready(function() {
    // build a dummy tree
	var root = nodeMe(15, nodeMe(10, nodeMe(8, nodeMe(6)), nodeMe(12, nodeMe(11))), nodeMe(20, nodeMe(17, nodeMe(16)), nodeMe(25, null, nodeMe(27))));
//    breadthFirst(root);
//    depthFirst(root);
//    rDepthFirst(root);
//    var balance = isBalanced(root);
    /*
	var min = findMin(root);
    var max = findMax(root);
    print(min, max);
    */
    breadthFirstPrintDepth(root);
})

function breadthFirst(root) {
    var queue = new Queue()
    queue.enqueue(root);
    while (queue.length() > 0) {
        var node = queue.dequeue();
        print(node);
        queue.enqueue(node.left);
        queue.enqueue(node.right);
    }
}

function breadthFirstPrintDepth(root) {
    var level = [root];
    var depth = 0;
    while (level.length > 0) {
        var next = [];
        print("depth = " + depth);
        for (var i = 0; i < level.length; ++i) {
            var node = level[i];
            node.left ? next.push(node.left) : null;
            node.right ? next.push(node.right) : null;
            print(node);
        }
        level = next;
        ++depth;
    }
}

function depthFirst(root) {
    var stack = new Stack()
    var...