javascript BinarySearchTree 查找树 - 二叉查找树

* 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 ]

https://github.com/trekhleb/javascript-algorithms

猜你喜欢

转载自blog.csdn.net/fareast_mzh/article/details/81746269