平衡二叉树
来源:互联网 发布:淘宝鞋店排行榜 编辑:程序博客网 时间:2024/05/17 08:22
定义
二叉树的查询速度取决于树的结构,树的深度越小查找的平均速度就越小,因此希望二叉树的高度尽可能小。前苏联科学家Adelson-Velskii和Landis(这里还是把名字打出来了,哈哈,是希望以后能看到我们中国人的名字)提出平衡二叉树,又称AVL树。
平衡二叉树:左右子树的深度之差绝对值不超过1,左右子树也是平衡二叉树。
平衡因子:节点左右子数深度差值。如下:
不平衡二叉树
平衡二叉树
平衡二叉树的平衡调整方法
具体例子,假如有关键字序列为(13,24,37,90,53),下面为构造平衡树的具体方法:
第一步:以序列的第一个数为根节点
第二步:
第三步:已经出现不平衡了,将在下步进行调整
第四步:调整
第五步:继续添加,又出现不平衡了,将在下步进行调整
剧终
是不是觉得蛮简单的,当出现不平衡时就以出现不平衡因子及它的子节点为子树进行调整,把中间的值作为子树的新根其他作为左右子节点就行了。
那么上面那个平衡二叉树加入关键字为91的节点,该怎弄?是不是觉得不容易调整了?
一般情况下可以归纳为4种情况
都直接上具体例子
- RR型
这时只需要向左的一次逆时针旋转就行
就是把右边节点移到上面去,如果出现三叉就作为根节点左边下面一个节点的右节点。
- LL型
这时只需要向右的一次顺时针旋转就行
就是把左边节点移到上面去,如果出现三叉就作为根节点右边下面一个节点的左节点。
- LR型
(1)LR(0)型
直接把中间值放中间就好
(2)LRL型
分离出RL型子树让现在子树根节点A的右节点B,作为根节点,B原来的左节点作为A的右节点,原来分离的另一部分作为现在根节点的右子树,结果如下
(3)LRR型
调整之后
- RL型
和LR类似不再赘述
阅读全文
0 0
- 平衡二叉树平衡法则
- 二叉树--二叉平衡树
- 平衡二叉树的
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉查找树
- 平衡二叉树 详解
- 平衡二叉树
- 平衡二叉树
- AVL 平衡二叉树
- 平衡二叉树
- 平衡二叉树-红黑树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 了解认识PDO及其连接数据库的三种简易方式
- 还款冷知识,你不问,银行也不会说!
- 任务调度--Quartz的cron表达式
- java中的匿名内部类总结
- github的SSH配置
- 平衡二叉树
- Python 的 AIML
- 复制迁移数据库表数据程序
- 初创公司:大数据时代,如何靠数据挣钱
- IDEA 快速搭建springboot项目,返回HTML首页
- 基于R的数据挖掘方法与实践(1)——数据准备
- 《Springboot极简教程》 Springboot plus Kotlin :Hello,World
- 《Springboot极简教程》使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
- 《Kotlin极简教程》第一章 Kotlin简介