* BinarySearchTree
/**
* Created by PhpStorm.
* User: Mch
* Date: 8/16/18
* Time: 23:26
*/
function Node(key) {
this.key = key;
this.left = null;
this.right = null;
}
function BinarySearchTree() {
this.root = null;
}
BinarySearchTree.insertNode = function(node, newNode) {
if (newNode.key < node.key) {
if (node.left === null) {
node.left = newNode;
} else {
BinarySearchTree.insertNode(node.left, newNode);
}
} else {
if (node.right === null) {
node.right = newNode;
} else {
BinarySearchTree.insertNode(node.right, newNode);
}
}
};
BinarySearchTree.prototype.insert = function(key) {
var newNode = new Node(key);
if (this.root === null) {
this.root = newNode;
} else {
BinarySearchTree.insertNode(this.root, newNode);
}
};
BinarySearchTree.inOrderTraverseNode = function(node, callback) {
if (node !== null) {
BinarySearchTree.inOrderTraverseNode(node.left, callback);
callback(node.key);
BinarySearchTree.inOrderTraverseNode(node.right, callback);
}
};
BinarySearchTree.prototype.inOrderTraverse = function(callback) {
BinarySearchTree.inOrderTraverseNode(this.root, callback);
};
Test:
var tree = new BinarySearchTree();
[7,15,5,3,9,8,10,13,12,14,20,18,25].forEach(function(el) {
tree.insert(el);
});
var a = [];
tree.inOrderTraverse(function(el) {
a.push(el);
});
console.log(a);
[ 3, 5, 7, 8, 9, 10, 12, 13, 14, 15, 18, 20, 25 ]