AVL和红黑树

平衡二叉树AVL

特殊的二叉排序树,左右子树都是平衡二叉树,左右子树高度差绝对值不超过1,logn。

它的存在是为了优化二叉排序树,防止一边太深。

红黑树

也是二叉排序树,每个节点增加一个存储为来存颜色。 

弱平衡,AVL太严格了,红黑树旋转次数少。

没有一条路径比其他路径长2倍,任意节点到叶节点的黑色节点数目相同。

所有节点非红即黑,首尾黑,红节点的孩子必黑。

两者区别

AVL高度平衡,红黑树弱平衡;

频繁插入删除,AVL效率下降;红黑树插入最多2次,删除最多3次。

哈夫曼编码

哈夫曼树:根据查找习惯建立一颗更快更合适的满二叉树,条件时每个单词出现的频率(权值)。搜索频率越高的单词越靠近树根,通过频率和节点离root的距离计算Wpl(带权路径长)=∑Li x Pi,最小化这个带权路径长得到的树就是哈夫曼树。

哈夫曼编码也叫霍夫曼编码,无前缀编码,可变字长编码,平均长度最短。应用于数据压缩。用字符在文件中出现的频率来建立的。

频率排序队列中,将频率最小的两个字符出队列,作为两个叶节点(值是频率),两频率之和作为父节点,然后将这个和的值加入到总的频率排序队列中。在重复上面的步骤。

B+树

多路搜索树,为磁盘或其他直接存储辅助设备而设计的平衡查找树。

每个节点可以有多个孩子,按照关键字大小有序排序。

特点:

每个节点上的指针上限为2d而不是2d+1(d为节点的出度)

内节点不存储data,只存储key

叶子节点不存储指针

红黑树旋转

能保持二叉搜索树的性质的局部操作,左旋和右旋,通过改变某些节点的颜色和指针结构保持红黑树的性质。

 

posted @ 2019-07-26 16:41  Austin_anheqiao  阅读(150)  评论(0编辑  收藏  举报