有关BST搜索树转换为AVL高度平衡树的旋转问题
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,最近在复习数据结构,看到BST的时候遇到了问题,就是当删除或增加树中节点时,要求保证树的高度平衡行,也就是使BST成为AVL。后来看了很多资料,说LL、RR、LR、RL啥的,没看懂。之后经过和同学研究
千家信息网最后更新 2024年11月12日有关BST搜索树转换为AVL高度平衡树的旋转问题
最近在复习数据结构,看到BST的时候遇到了问题,就是当删除或增加树中节点时,要求保证树的高度平衡行,也就是使BST成为AVL。
后来看了很多资料,说LL、RR、LR、RL啥的,没看懂。之后经过和同学研究发现了一个特性,就是offending node与其回溯路径上的最近的两个点有大小关系。
如上图,一个空BST树,插入16到树中,由于是空树,那么16就作为根节点。之后再输入3。3比16小,放在16的左边作为左子节点,再输入7,7比16小,走左子树一边,然后7再和3相比较,7比3大,走3的右子树。但是如上图所示,这不是一棵AVL树,因为16的左子树高度为2,右子树高度为0,左右高度差的绝对值为2,超过了AVL的条件:左右高度绝对差<2。那么就需要"旋转子树"以保证其AVL特性。
看了很多书,都说什么左旋转啊右旋转啊,像上图这种情况还比较复杂,需要先左旋转后右旋转。
其实,经过这些天的研究发现,以上图为例,当节点7进入树之后,打破了平衡,那么就从节点7开始回溯找到offending node,也就是节点16。然后选择offending node与回溯路径上的距离节点16的最近的两个node,也就是节点3和7。这三个点选取之后,对三个点进行大小比较,找出最小、最大和中间节点,比如16、3、7三个节点的按大小排序后的顺序是3、7、16。然后中间的节点(节点7)作为新树的根,其左节点是最小节点,右节点是最大节点,然后将新树接回原来的树上。
节点
高度
子树
上图
三个
也就是
大小
最大
最小
两个
就是
左旋
特性
路径
保证
研究
输入
问题
复杂
这不
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发符合什么专业
猫和老鼠游戏服务器卡屏怎么办
数智网络安全
信息网络安全评估的方法
学校网络安全简报范文
acer服务器管理ip
大学生网络安全防诈骗内容
sshd服务器搭建教程
数据库原理与技术理学知识点
服务器怎么取消密码访问
功能最强大的数据库是什么
安全评价数据库系统主要内容
如何利用数据库输出报表
提升网络安全意识 报道
阿里云服务器内网有啥用
如何下载u盘中的数据库到电脑上
r语言如何换服务器
网络安全国土安全
数据库2008的卸载
数据库设计技术规范
大理网络技术
湖南机电网络安全测评服务
深圳软件开发累吗
php从数据库中查询数据
电脑打印机服务器笔记本回收
制服小说软件开发
网络安全考证通过率
sql2008数据库分享
学校网络安全工作计划总结
网络安全体制机制应急预案