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...