js手写二叉排序树

本文介绍了如何使用JavaScript手写实现二叉排序树,该数据结构中每个节点的左子节点值小于根节点,右子节点值大于根节点,以此确保树的排序特性。

二叉排序树:每个节点的左节点都比根节点小,右节点都比根节点大

function TreeNode(data, left, right) { //节点结构
    this.val = data;
    this.left = left;
    this.right = right;
}

function BST() { //二叉树构造函数
    this.root = null; //默认是一颗空树
    this.insert = function (data) { //添加节点功能
        var newNode = new TreeNode(data, null, null); //首先构造一个二叉树节点
        if(!this.root) { //如果是一个空树(空树根节点是null),直接把这个节点变成根节点
            this.root = newNode;
        }else {
            this.insertNode(this.root, newNode) //不是空树的情况
        }
    };
    this.insertNode = function (root, newNode) {
    //首先判断将要加入的节点和目前节点的大小
        if(newNode.val < root.val) { //如果比节点小
            if(root.left === null) { //如果节点的左边是null
                root.left = newNode; //直接添加到做节点
                return; //返回
            }
            this.insertNode(root.left, newNode); //如果节点的左边不是空的(左边已经存在节点了),那就把左边的节点作为根节点递归
        }else { //如果比节点大
            if(root.right === null) { //如果节点的右边是null
                root.right = newNode; //直接添加到做节点
                return; //返回
            }
            this.insertNode(root.right, newNode); //如果节点的右边不是空的(左边已经存在节点了),那就把左边的节点作为根节点递归
        }
        //递归到最后找到为null的结点把它添加就完事
    }
}

var bst = new BST();
bst.insert(12);
bst.insert(5);
bst.insert(17);
bst.insert(4);
bst.insert(6);
bst.insert(30);
console.log(bst);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值