Javscript实现二叉搜索树(二叉排序树)的创建

二叉搜索树的特点:当前root节点的左子树中所有的节点都小于当前root节点,右子树的所有节点都大于当前root节点。root节点为左右子树中任意节点时,同样如此。

代码:

//  定义节点结构
function Node(data, left, right) {
    this.data = data;
    this.left = left;
    this.right = right;
}

// 定义BinaryTree的结构
function BinaryTree() {
    this.root = null;
    this.insert = function(data) {
        let node = new Node(data, null, null);
        if(this.root === null) {
            this.root = node;
        } else {
            insertNode(this.root, node);
        }
    };

    // 插入节点函数,如果newNode小于当前root节点,则往左子树搜索,
    // 如果左孩子为空,则放到左孩子,如果不为空,则再次向左子树搜索
    function insertNode(root, newNode) {
        if(newNode.data < root.data) {
            if(root.left === null) {
                root.left = newNode;
            } else {
                insertNode(root.left, newNode);
            }
        } else {
            if(root.right === null) {
                root.right = newNode;
            } else {
                insertNode(root.right, newNode);
            }
        }
    }
}

你可能感兴趣的:(Javscript实现二叉搜索树(二叉排序树)的创建)