数据结构--二叉排序树

目录

二叉排序树的定义

二叉排序树的查找

二叉排序树的插入

二叉排序树的构造

二叉排序树的删除

查找效率分析

回顾


二叉排序树的定义

二叉排序树的查找

查找成功的情况

查找失败的情况

二叉排序树的插入

注意

(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)

回顾

相关推荐
自动化代码美学5 小时前
【Python3.13】官网学习之控制流
开发语言·windows·python·学习
AA陈超6 小时前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
无敌最俊朗@7 小时前
力扣hot100-206反转链表
算法·leetcode·链表
Kuo-Teng7 小时前
LeetCode 279: Perfect Squares
java·数据结构·算法·leetcode·职场和发展
王哈哈^_^7 小时前
YOLO11实例分割训练任务——从构建数据集到训练的完整教程
人工智能·深度学习·算法·yolo·目标检测·机器学习·计算机视觉
檐下翻书1738 小时前
从入门到精通:流程图制作学习路径规划
论文阅读·人工智能·学习·算法·流程图·论文笔记
CoderYanger8 小时前
B.双指针——3194. 最小元素和最大元素的最小平均值
java·开发语言·数据结构·算法·leetcode·职场和发展·1024程序员节
SalvoGao8 小时前
Python学习 | 怎么理解epoch?
数据结构·人工智能·python·深度学习·学习
思成不止于此8 小时前
深入理解 C++ 多态:从概念到实现的完整解析
开发语言·c++·笔记·学习·多态·c++40周年
Highcharts.js8 小时前
学习 Highcharts 可视化开发的有效途径
学习·数据可视化·highcharts·图表开发·可视化开发