1预排序 优化:及时回溯 排序过程中的语义 应用:唯一元素,最多元素, 2.高斯消元 矩阵运算相关,先跳过 3.AVL树 每个节点维护一个平衡因子:左子树高度-右子树高度 AVL树失去平衡,旋转 旋转平衡因子+-2的节点 旋转保证满足定义 保持二叉树 恢复平衡 删除的效率低 灵感:旋转树,不破坏结构 ...
分类:
其他好文 时间:
2018-06-02 17:41:22
阅读次数:
252
平衡树 平衡树是什么? 简单说,就是一颗二叉搜索树,并且它的深度保持相对稳定,也就是不会退化成链的树. 平衡树有什么用? 平衡树可以说是区间操作的数据结构中最好用的一种了吧,它最大的用处自然是维护区间了. 平衡树都有哪些呢? 平衡树的种类也是多种多样,因为有些在竞赛中可能实现起来比较麻烦 ~~(请问 ...
分类:
其他好文 时间:
2018-05-24 20:40:42
阅读次数:
124
AVL树简介 AVL树的名字来源于它的发明作者G.M. Adelson-Velsky 和 E.M. Landis。AVL树是最先发明的自平衡二叉查找树(Self-Balancing Binary Search Tree,简称平衡二叉树)。 平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质 ...
分类:
编程语言 时间:
2018-05-23 20:47:58
阅读次数:
376
上一节介绍如何使用二叉排序树实现动态查找表,本节介绍另外一种实现方式——平衡二叉树。平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在二叉树的基础上,若树中每棵子树都满足其左子树和右 ...
分类:
其他好文 时间:
2018-05-21 16:19:38
阅读次数:
198
描述 判断一棵二叉树是否是平衡二叉树。 平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 二叉树节点定义如下: st ...
分类:
其他好文 时间:
2018-05-21 14:38:35
阅读次数:
183
红黑树: 适用于插入、删除、搜索操作。 源自2-3树,属于平衡二叉树,插入、删除后最多经过三次旋转、颜色转换达到平衡。 减少搜索层级。兼具AVL树平衡优点,保持花费太多代价更小。 基本结构: TreeNode<K,V> parent; // red-black tree links TreeNode ...
分类:
其他好文 时间:
2018-05-19 14:45:08
阅读次数:
146
算法原理请参考《算法导论》 代码实现,只贴出和红黑树不同的类成员函数实现,其余都是和红黑树一样。 类声明 和红黑树不同的类成员函数实现 avl_insert成员函数 avl_delete成员函数 avl_fixup成员函数,修复节点 avl_max_depth成员函数,最大深度 avl_min_de ...
分类:
其他好文 时间:
2018-05-12 16:46:06
阅读次数:
185
满二叉树: 完全二叉树:只允许最后一层有空缺,且空缺从右向左连续空缺。 排序二叉树:BST 任意一个父节点左子树比它小,右子树比它大。 平衡二叉树:AVL 树中任意节点,左子树右子树高度差不超过1. 二叉树的基本性质: 一个有K层的二叉树,节点总和最多有2k -1个。 一个有K层的二叉树,叶子节点总 ...
分类:
其他好文 时间:
2018-05-09 15:11:13
阅读次数:
158
红黑树的删除 红黑树删除极其复杂,实现难度比AVL树删除更大,要考虑的各种分支情况繁多,编程实现时在琐碎的细节上容易出错,但只要用心,正确实现删除算法不难 对红黑树按对二叉搜索树执行删除的方式执行删除,如果实际删除的节点是红节点,按正常方式删除,删除后原树仍为红黑树,结束 若实际删除的是黑节点,该节 ...
分类:
其他好文 时间:
2018-05-06 01:30:03
阅读次数:
171
在使用二叉搜索树的时候会出现 一个问题,就是树的一条分支会有很多层,而其他的分支却只有几层,就像下面这样: 如果数据量够大,那么我们在某条边上进行增删改查的操作时,就会消耗大量的时间。我们花费精力去构造一个可以提高效率的结构,反而事与愿违。这不是我们想要的。所以,我们需要另外一种树来解决这样的问题, ...
分类:
Web程序 时间:
2018-05-04 23:18:47
阅读次数:
270