js数据结构第九弹:二叉树和二叉查找树

本文介绍了树的定义,特别是二叉树和二叉查找树的概念。二叉查找树是一种特殊二叉树,其中每个节点的左子节点的值小于当前节点,右子节点的值大于当前节点。文章详细阐述了如何在二叉查找树中插入节点、遍历(中序、先序、后序)以及查找操作。同时,还讨论了在二叉查找树上删除节点的不同情况,包括删除叶节点、只有一个子节点的节点和有两个子节点的节点。
摘要由CSDN通过智能技术生成

树是一种非线性的数据结构, 以分层的方式存储数据。 树被用来存储具有层级关系的数据, 比如文件系统中的文件; 树还被用来存储有序列表。
优点:在二叉树上进行查找非常快(而在链表上查找则不是这样), 为二叉树添加或删除元素也非常快(而对数组执行添加或删除操作则不是这样)。

1 树的定义

树由一组以边连接的节点组成。 每个方框都是一个节点, 连接方框的线叫做

一棵树最上面的节点称为根节点, 如果一个节点下面连接多个节点, 那么该节点称为父节点, 它下面的节点称为子节点。 一个节点可以有 0 个、 1 个或多个子节点。 没有任何子节点的节点称为叶子节点

在这里插入图片描述
二叉树是一种特殊的树, 它的子节点个数不超过两个。

沿着一组特定的边, 可以从一个节点走到另外一个与它不直接相连的节点。 从一个节点到另一个节点的这一组边称为路径, 在图中用虚线表示。 以某种特定顺序访问树中所有的节点称为树的遍历

树可以分为几个层次, 根节点是第 0 层, 它的子节点是第 1 层, 子节点的子节点是第 2层, 以此类推。 树中任何一层的节点可以都看做是子树的根, 该子树包含根节点的子节点, 子节点的子节点等。 我们定义树的层数就是树的深度

每个节点都有一个与之相关的值, 该值有时被称为

2 二叉树和二叉查找树

一个父节点的两个子节点分别称为左节点和右节点。二叉查找树是一种特殊的二叉树, 相对较小的值保存在左节点中, 较大的值保存在右节点中。

1 实现二叉查找树

//保存数据, 保存和其他节点的链接
function Node(data, left, right) {
    this.data = data;
    this.left = left;
    this.right = right;
    this.show = show;
    }
    
//显示保存在节点中的数据。
function show() {
    return this.data;
    }

创建一个类, 用来表示二叉查找树(BST)。
类只包含一个数据成员: 一个表示二叉查找树根节点的 Node 对象。 该类的构造函数将根节点初始化为 null, 以此创建一个空节点。

BST 先要有一个 insert() 方法, 用来向树中加入新节点。
首先要创建一个 Node 对象, 将数据传入该对象保存。

其次检查 BST 是否有根节点, 如果没有, 那么这是棵新树, 该节点就是根节点, 这个方法到此也就完成了; 否则, 进入下一步。

如果待插入节点不是根节点, 那么就需要准备遍历 BST&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值