js代码实现二叉查找树的算法

本文详细介绍了如何使用JavaScript实现二叉查找树,包括节点定义、插入、查找和删除等关键功能。二叉查找树是一种特殊的二叉树,其每个节点的左子树所有节点小于该节点,右子树所有节点大于该节点。文章通过示例代码展示了如何操作二叉查找树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js代码实现二叉查找树的算法

理论

二叉查找树(Binary Search Tree),又称二叉排序树或二叉搜索树,是属于二叉树的一种。它最大的特点是每个节点的左子节点永远比该节点小,而每个节点的右子节点却永远比该节点大,即任意节点的左子树上所有结点永远比该节点的右子树上所有结点的值小,它的任意左、右子树也分别为二叉查找树。

代码

以下是使用js代码来实现。

先定义二叉查找树的节点:

/**
 * 树的节点
 * @param  data  节点的数值
 * @param  left  该节点的左子节点
 * @param  right 该节点的右子节点
 */
function TreeNode(data, left, right) {
    this.data = data;
    this.left = left || null;
    this.right = right || null;
}

定义二叉树:

/**
 * 二叉查找树
 * @param  rootNode 根节点
 */
function BinarySearchTree(rootNode) {
    this.rootNode = rootNode || null;
}

BinarySearchTree.prototype = {
    // 后面讲的查找,新增,删除功能会放在本区域(即原型)
}

二叉查找树的新增功能

插入工作必须按照二叉查找树的特性来完成。

  1. 首先判断该二叉树是否有根节点,如果没有则把新节点作为根节点,反之则继续;
  2. 从根节点开始逐级比较,即如果新结点的值小于根节点的值,则将新结点与根节点的左子树中的节点去比较,大于则与根节点的右子树中的节点去比较;
  3. 逐级比较直到找到需要插入的空位为止,把新节点放入即可;

新增代码如下:

/**
* 插入节点
* @param   data 需要插入节点的值
*/
function insert(data) {
   // 生成新的节点
   var newNode = new TreeNode(data);
   // 判断根节点是否存在
   if (!this.rootNode) {
       this.rootNode = newNode;
       return;
   }
   var currentNode = this.rootNode;
   var parent = null;
   while (true) {
       parent = currentNode;
       if (data < currentNode.data) {
           currentNode = currentNode.left;
           if (!currentNode) {
               parent.left = newNode;
               return;
           }
       } else if (data > currentNode.data) {
           currentNode = currentNode.right;
           if (!currentNode) {
               parent.right = newNode;
               return;
           }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值