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