数据结构--二叉排序树

目录

二叉排序树的定义

二叉排序树的查找

二叉排序树的插入

二叉排序树的构造

二叉排序树的删除

查找效率分析

回顾


二叉排序树的定义

二叉排序树的查找

查找成功的情况

查找失败的情况

二叉排序树的插入

注意

(1)二叉排序树不允许出现重复的值,不能插入相同的结点,所以插入的元素如果是和之前的关键字相同,则插入失败。

(2)递归实现的最坏空间复杂度是O(h)

(3)新插入的结点一定是叶子结点

二叉排序树的构造

二叉排序树的删除

(1)

(2)

比如删除13结点和60结点后的效果

(3)

方法1:

找右子树的直接后继(通过中序排列)

要删除50,用50的右子树,将右子树中序排列(60.61.63.65.66.70)最先访问的结点60,替代要删除的结点50的位置,

删除结果为

方法2:

找左子树(的直接前驱)中最大的值去替代要删除的结点,要删除的结点50的左子树最大的值30,所以用30代替50

删除后的结果如下:

查找效率分析

对比1次就是一层,2次就是第二层,依次类推......

比如:对于70的查找长度就是3次(三层)

对比次数肯定不会超过树的高度,

若树高h,找到最下层的一个结点需要对比h次

查找最好情况就是像平衡二叉树那样

(平衡二叉树:树上任一个结点左子树和右子树的深度之差不超过1)

回顾

相关推荐
旖旎夜光4 小时前
C++(17)
c++·学习
专注于大数据技术栈5 小时前
java学习--StringBuilder
java·学习
LYFlied6 小时前
【每日算法】LeetCode 153. 寻找旋转排序数组中的最小值
数据结构·算法·leetcode·面试·职场和发展
唐装鼠6 小时前
rust自动调用Deref(deepseek)
开发语言·算法·rust
qcwl666 小时前
操作系统 真象还原 学习笔记#13
笔记·学习
元亓亓亓6 小时前
考研408--计算机网络--day10--传输层&UDP&TCP
tcp/ip·计算机网络·考研·udp·408
车载测试工程师6 小时前
CAPL学习-CAN相关函数-概述
网络协议·学习·capl·canoe
roman_日积跬步-终至千里6 小时前
【人工智能导论】08-学习-如何让计算机理解序列数据——用RNN/LSTM建模时序依赖,用文本嵌入表示序列元素
人工智能·rnn·学习
m0_689618286 小时前
30 分钟打印!多材料3D打印软机器人内置驱动 + 自主避障
笔记·学习·机器人
ytttr8737 小时前
MATLAB基于LDA的人脸识别算法实现(ORL数据库)
数据库·算法·matlab