B树是为了提高磁盘或外部存储设备查找效率而产生的一种多路平衡查找树。 B+树为B树的变形结构,用于大多数数据库或文件系统的存储而设计。 B树相对于红黑树的区别 在大规模数据存储的时候,红黑树往往出现由于树的深度过大而造成磁盘IO读写过于频繁,进而导致效率低下的情况。为什么会出现这样的情况,我们知道要 ...
分类:
其他好文 时间:
2017-08-17 22:52:02
阅读次数:
330
typedef struct avltreenode *avltree; typedef struct avltreenode{ int data; avltree left; avltree right; int height; }; int getheight(avltree a) { if(a ...
分类:
其他好文 时间:
2017-08-13 21:38:09
阅读次数:
143
leveldb中的memtable仅仅是一个封装类,它的底层实现是一个跳表。跳表是一种基于随机数的平衡数据结构。其它的平衡数据结构还有红黑树、AVL树。但跳表的原理比它们简单非常多。跳表有点像链表,仅仅只是每一个节点是多层结构,通过在每一个节点中添加向前的指针提高查找效率。例如以下图: 在/leve ...
分类:
数据库 时间:
2017-08-08 19:56:44
阅读次数:
224
SearchTree Insert(ElementType X, SearchTree T) { if (T == NULL) { T == malloc(sizeof(struct TreeNode)); if (T == NULL) { Error("out of space"); } else... ...
分类:
其他好文 时间:
2017-07-30 13:57:33
阅读次数:
153
前言 红黑树是工程中最常用到的一种自平衡二叉排序树,其和AVL树类似,都是在进行插入、删除时通过一定的调整操作来维持相对稳定的树高,从而获得较好的查询性能。 性质 1. 节点是红色或黑色。 2. 根节点是黑色。 3 每个叶节点(null节点)是黑色的。 4 每个红色节点的两个子节点都是黑色。(从每个 ...
分类:
编程语言 时间:
2017-07-27 23:36:39
阅读次数:
257
AVL树是一种平衡二叉搜索树,在渐进意义下,可以保证树的高度为logn,查找、插入和删除操作均可以在O(logn)时间内完成。AVL树的名字来源,是提出它的人0 0 引入平衡因子的概念,任一节点的平衡因子定义为其左右子树的高度差。 AVL树的限定,是任何一个节点的平衡因子绝对值不大于1。可以通过继承 ...
分类:
其他好文 时间:
2017-07-27 01:01:18
阅读次数:
158
学习过了二叉查找树,想必大家有遇到一个问题。例如,将一个数组{1,2,3,4}依次插入树的时候,形成了图1的情况。有建立树与没建立树对于数据的增删查改已经没有了任何帮助,反而增添了维护的成本。而只有建立的树如图2,才能够最大地体现二叉树的优点。 在上述的例子中,图2就是一棵平衡二叉树。科学家们提出平 ...
分类:
其他好文 时间:
2017-07-16 15:47:02
阅读次数:
186
概述:本文从排序二叉树作为引子,讲解了红黑树,最后把红黑树和AVL树做了一个比较全面的对比。 1 排序二叉树 排序二叉树是一种特殊结构的二叉树,可以非常方便地对树中所有节点进行排序和检索。 排序二叉树要么是一棵空二叉树,要么是具有下列性质的二叉树: ? 若它的左子树不空,则左子树上所有节点的值均小于 ...
分类:
其他好文 时间:
2017-07-16 15:46:29
阅读次数:
212
1 #pragma once 2 3 #include 4 5 template 6 class AVLTree; 7 8 template 9 class AVLNode 10 { 11 friend class AVLTree; 12 public: 13 AVLNode() : data(Ty... ...
分类:
其他好文 时间:
2017-07-11 23:28:12
阅读次数:
348