数据结构 平衡二叉树
来源:互联网 发布:手机神马打印软件 编辑:程序博客网 时间:2024/06/17 01:49
搜索树节点的不同插入次序, 将导致不同的深度和平均查找长度ASL
AVL平均查找次数:
avl(a) = (1 + 2x2 + 3x3 + 4x3 +5x2 + 6x1); //平均查找长度
平衡树的概念:
平衡因子: BF(T) = 左子树的高度 - 右子树的高度
空树 或者左右两边的高度差绝对值不超过1
比如这棵树 假设7为第0层 则左边的高度为3 右边的高度为1 高度差为 |3-1| = 2
设nh是高度为h的平衡二叉树的最小节点数
设nh是高度为h的平衡二叉树的最小节点数
给定节点数为n的AVL二叉树的最大高度为O(log2n)
平衡二叉树的调整:
如上图,在插入一个新的节点后 二叉树不平横了 此时通过旋转操作 使二叉树重新恢复平衡
不平衡的"发现者"是Mar, "麻烦节点"Nov在发现者右子树的右边
因而叫RR操作
二叉树原本是平衡的 插入一个新元素后平衡被破坏了 此时需要旋转来调整
因为是右子树上的插入 因此右旋转
例子: RR旋转
如上图: 原本二叉树是平衡的 在插入一个新元素15后 平衡被破坏
被破坏者是:5 破坏者是15
因此对5的右子树10进行旋转 旋转后效果如右图
(注:破坏者插在14的左右两边都可以进行旋转)
例子:LL旋转
如上图:出现了两个被破环者 此时选择最下方的被破坏者 Mar
对其进行左旋转 效果如右图
阅读全文
0 0
- 数据结构 - 平衡二叉树
- 数据结构: 平衡二叉树
- 数据结构 平衡二叉树
- 【数据结构】平衡二叉树
- 数据结构&&平衡二叉树
- 数据结构--平衡二叉树
- 数据结构--平衡二叉树
- 数据结构---平衡二叉树
- 数据结构--平衡二叉树
- 数据结构 平衡二叉树
- 数据结构-平衡二叉树
- 数据结构之平衡二叉树
- 数据结构 - 平衡二叉树 AVL
- 数据结构之 平衡二叉树
- 【数据结构】平衡二叉树_AVLTree
- 数据结构之平衡二叉树
- 数据结构之平衡二叉树
- 数据结构之平衡二叉树
- 面向接口编程
- ElasticSearch 5.0.0 安装部署常见错误或问题
- windows下安装Anaconda及tensorflow
- Android ANR调试
- 转载学习- Spring框架中IoC(控制反转)的原理
- 数据结构 平衡二叉树
- getHibernateTemplate().find判断为空
- ios 9和iOS11 NavigationBar结构的差别
- 【书籍】Java常用算法手册-链表结构
- 教你编写 Node.js 中间件,实现服务端缓存(附demo源码)
- 为什么会有许多人认为C盘太满会影响电脑运行速度?
- Vijos 1691题:输油管道问题
- 移动端横竖屏显示页面不全解决方案
- 事件驱动与异步IO