Binary search tree
by María Fernández
JavaScript
'use strict';
function printNode(node) {
console.log('Current node value: ', node.value);
}
var BinarySearchTree = function() {
this.root = null;
}
BinarySearchTree.prototype.insert = function(value) {
var newNode = {
value: value,
left: null,
right: null
};
function insertRecurse (nodeToInspect) {
if (nodeToInspect.value > newNode.value) {
if (nodeToInspect.left === null) {
nodeToInspect.left = newNode;
} else {
insertRecurse(nodeToInspect.left);
}
} else if (nodeToInspect.value < newNode.value) {
if (nodeToInspect.right === null) {
nodeToInspect.right = newNode;
} else {
insertRecurse(nodeToInspect.right);
}
}
}
if (this.root === null) {
this.root = newNode;
} else {
insertRecurse(this.root);
}
}
/**
* Left, cb(currentNode), Right
*/
BinarySearchTree.prototype.inOrderTraversal = function(cb) {
if (this.root === null) {
return;
}
function recurse(currentNode) {
if(currentNode.left) recurse(currentNode.left);
cb(currentNode);
if (currentNode.right) recurse(currentNode.right);
}
recurse(this.root);
}
/**
* cb(currentNode), Left, Rigt
*/
BinarySearchTree.prototype.preOrderTraversal = function(cb) {
if (this.root === null) {
return;
}
function recurse(currentNode) {
cb(currentNode);
if(currentNode.left) recurse(currentNode.left);
if (currentNode.right) recurse(currentNode.right);
}
recurse(this.root);
}
/**
* Left, Rigt, cb(currentNode)
*/
BinarySearchTree.prototype.postOrderTraversal = function(cb) {
if (this.root === null) {
return;
}
function recurse(currentNode) {
if(currentNode.left) recurse(currentNode.left);
if (currentNode.right) recurse(currentNode.right);
cb(currentNode);
}
recurse(this.root);
}
BinarySearchTree.prototype.search = function(value) {
var found = false;
function...