顺序存储:使用一片连续的逻辑地址存放数据
链式存储:不用连续地址,使用指针指向下个元素的地址html
BST 是一种树,他的特性是
1.左子树上全部结点的值均小于或等于它的根结点的值。
2.右子树上全部结点的值均大于或等于它的根结点的值。
3.左、右子树也分别为BSTnode
这个时候咱们就有新的树来解决他的缺点就是(AVL Tree)数组
AVL树,本质上是带了平衡功能的BST,他多了个平衡因子概念
即(每一个结点的左右子树的高度之差的绝对值(平衡因子)最多为1),若是不知足就会旋转来知足这个条件。
上面图一BST 在avl中旋转操做后获得以下,具体怎么旋转的能够在这个网站本身模拟
https://www.cs.usfca.edu/~gal...
那么AVL 有没有什么缺点呢?
最大的缺点就是追求完美的平衡致使插入和删除须要大量的平衡计算,这个在插入和删除大的状况致使开销较大,这个时候咱们就想着,有没有一种树,解决BST的缺点,同时又不要大量的计算平衡,因而RB-Tree就被发明了数据结构
删除node引发树的不平衡时,最坏状况下,AVL须要维护从被删node到root这条路径上全部node的平衡性,而RB-Tree最多只需3次旋转。网站
下图是解决图一不平衡RB-Tree的图spa