数据结构之二叉树2—二分搜索树

目录

一、概念

二、二分搜索树与双向链表(JZ36)

1.BST转为排序的双向链表

2.BST转换成循环的排序双向链表:leetcodeJZ36

三、二分搜索树的实现

1.向BST中添加元素

2.BST的打印方法

3.BST中查找操作

1)是否包含val值

2)查找最大最小值

4.修改

5.BST中删除操作

1)删除最大最小值

2)删除任意值⭐

四、BST的退化

避免退化措施(平衡树)


一、概念

      二分搜索树(BinarySearchTree)又叫BST、二叉搜索树,是个二叉树(每个节点最多两个子节点),有天然的查找与搜索语义。同时对于BST来讲,该树中每个节点间的节点值都满足以下大小关系:左子树所有节点值<根节点<右子树所有节点值对于JDK来讲,BST中不存在值相等的元素,JDK中的搜索树就不存在相同的值(TreeMap)。

特点:

1.在BST中查找一个元素,就是二分查找【在一个有序区间进行二分查找的时间复杂度:logN】

2.对BST进行中序遍历会得到一个完全有序的数据集(升序)

二、二叉搜索树与双向链表(JZ36)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是一种非线性数据结构,由节点和边组成,具有层次结构,根节点位于最高层,叶子节点位于最底层。每个节点可以有多个子节点,但是每个节点只能有一个父节点,除了根节点没有父节点,叶子节点没有子节点。 的分类: 1. 二叉树:每个节点最多有两个子节点。 2. 平衡:左右子的深度之差不超过1的。 3. 满二叉树:每个节点都有0或2个子节点的二叉树。 4. 完全二叉树:除了最后一层节点可能不满外,其他层节点都必须达到最大值,并且最后一层的节点都要靠左排列。 5. 二叉搜索(BST):左子上的所有节点的值都小于它的根节点的值,右子上的所有节点的值都大于它的根节点的值。 6. B树:多叉,每个节点可以有多个子节点。 的实现方式: 1. 链式存储:使用指针将节点之间连接起来,每个节点包含指向其子节点或父节点的指针。 2. 数组存储:将转化为数组进行存储,每个节点在数组中的位置可以通过它的父节点或子节点的下标计算得出。但是,由于二叉树的节点数可能会非常庞大,因此使用数组存储一般只适用于完全二叉树。 3. 邻接矩阵存储:使用二维数组来表示节点之间的关系,其中行和列分别表示节点,矩阵的值表示节点之间是否有边相连。但是,邻接矩阵存储在空间上的消耗比较大,而且针对稀疏图存储时会浪费很多空间。 4. 邻接表存储:使用链式存储来表示节点之间的关系,每个节点包含一个指向它的子节点的指针,通过这种方式可以节省空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值