//AVL树
#include
#include
using namespace std;
class avl_tree
{
private:
struct tree
{
int data;
tree* L;
tree* R;
int height;
tree(int data_) :data(data_), L(0), R(0), height(0){}...
分类:
编程语言 时间:
2015-05-14 12:01:56
阅读次数:
234
目录一、预备知识二、二叉树三、查找树ADT-----二叉查找树四、AVL树五、伸展树六、树的遍七、B树八、标准库中的集合与映射五、伸展树六、树的遍七、B树八、标准库中的集合与映射第三章节中的List容器,如ArrayList/ LinkedList用于查找时的效率很低,因此Collection AP...
分类:
其他好文 时间:
2015-05-12 22:42:47
阅读次数:
130
一、预备知识二、二叉树三、查找树ADT-----二叉查找树四、AVL树五、伸展树六、树的遍历七、B树八、标准库中的集合与映射
分类:
其他好文 时间:
2015-05-10 23:55:09
阅读次数:
160
1 #include 2 using namespace std; 3 4 class AVL 5 { 6 public: 7 enum BF { RH = 1 , EH , LH }; 8 class Node 9 { 10 public: 1...
分类:
其他好文 时间:
2015-05-05 11:56:42
阅读次数:
224
1. AVL树的介绍AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。
它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。
如上图(左):非AVL树,如对节点9,左子树高度为0,右子树高...
分类:
其他好文 时间:
2015-04-28 23:00:58
阅读次数:
330
AVL树为了防止树的深度过深出现的一种数据结构,在二叉树的基础上添加了一条规则:每个节点的左子数与右子树的高度最多差1。其中的难点之一为:插入一个节点。删除一个节点更难,在这里采用懒惰删除法。其中,在插入的时候更新根节点路径上那些节点的所有高度。AVL节点:struct AvlNode{ El...
分类:
其他好文 时间:
2015-04-27 20:06:18
阅读次数:
135
上一节 已经说了 AVL树的插入 操作,可是 只有 插入,没有删除,怎么能叫 动态 查找表呢。
呵呵,博主 赶紧 去 研究了一番。下面 是成果:
AVL树的删除 大致 分为 两大块: 1. 查找节点 并 删除 2. 保持 删除 后 平衡因子的 影响
1. 首先 找到 这个 节点,如果 节点 不存在,直接 退出 函数
if (*tree == NULL){//没找到
...
分类:
其他好文 时间:
2015-04-22 14:01:33
阅读次数:
176
链接:
PAT1066
题意:
求依次插入N个带权节点的平衡二叉树最后的根节点的权是多少
代码:
#include
#include
#include
#include
using namespace std;
typedef struct node{
int data;
node *left,*right;
int h;
...
分类:
其他好文 时间:
2015-04-21 22:49:15
阅读次数:
159
AVL树是带有平衡条件的二叉查找树,其查找和删除的时间复杂度为logn,是对二叉查找树的改进,我们将节点的左子树和右子树深度之差称为平衡因子(BF),其中的每一个节点的平衡因子的绝对值不大于1。
距离插入节点最近的,并且平衡因子绝对值大于1的节点为根的子树,称为最小不平衡子树。
要实现AVL树,就必须保证在插入的时候消除不平衡的子树,即通过某种方式,使每次插入一个节点,都是平衡的BST树,下面...
分类:
编程语言 时间:
2015-04-21 09:55:28
阅读次数:
385