function BinaryTree() {
const Node = function (key) {
this.key = key;
this.left = null;
this.right = null;
};
this.root = null;
const insertNode = function (node, newNode) {
if (node.key > newNode.key) {
if (node.left == null) {
node.left = newNode;
} else {
insertNode(node.left, newNode);
}
} else {
if (node.right === null) {
node.right = newNode;
} else {
insertNode(node.right, newNode);
}
}
};
this.insert = function (key) {
let newNode = new Node(key);
if (this.root === null) {
this.root = newNode;
} else {
insertNode(this.root, newNode);
}
};
const inOrderTraverseNode = function (node, callback) {
if (node !== null) {
inOrderTraverseNode(node.left, callback);
callback(node.key);
inOrderTraverseNode(node.right, callback);
}
}
this.inOrderTraverse = function (callback) {
inOrderTraverseNode(this.root, callback);
}
}
const binaryTree = new BinaryTree();
const nodes = [8, 3, 10, 1, 6, 14, 4, 7, 13];
nodes.forEach((val) => {
binaryTree.insert(val);
});
const callback = (key) => {
console.log(key)
}
binaryTree.inOrderTraverse(callback);