面试准备红黑树 B树 二项树 hash_map

红黑树

性质:1.结点红或黑

     2.根结点黑

     3.叶结点黑

     4.红结点,子两黑

     5.从某结点到叶子节点上黑结点的数目相同

黑高度bh(x):路径上黑结点的数目

根到叶结点的任意条简单路径上至少有一半的结点是黑色的。

 

左旋 y旋转到x处,x旋转到左下角

右旋 x旋转到y处,y旋转到右下角

 

插入:z作为红色结点插入二叉树,然后进行红黑树性质调整。

 

 

B树 平衡查找树

关键字数 最小度数 t

1.每个非根的结点必须至少有t-1个关键字,每个非根的内结点至少有t个子女

2.每个结点可包含至多2t-1个关键字,所以一个内结点至多可有2t个子女

搜索:多路(二叉树 两路分支)

 

插入:插入到2t-1个叶结点中,出现2t个结点后,将结点分裂成两个t

 

二项树 

共有2(k)个结点 

树高度为k

在深度i处 恰有(k,i)个结点

根的度数为k,它大于任何其他结点度数

Bk=Bk-1 + Bk-1 即 Bk=Bk-1+Bk-2+Bk-3+…+B0

 

二项堆 由二项树组成 一种二项树在二项堆中只存在一个

 

斐波那契堆 

 

 

hash_map

基于hash_table 基本原理 使用一个下标范围比较大的数组来存储元素。

可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字

都与一个函数值(即数组下标,hash值)相对应,于是用这个数组单元来存

储这个元素;也可以简单的理解为,按照关键字为每一个元素“分类”,然后

将这个元素存储在相应“类”所对应的地方,称为桶。

  插入过程:

  1. 得到key

  2. 通过hash函数得到hash值

  3. 得到桶号(一般都为hash值对桶数求模)

  4. 存放key和value在桶内。

  取值过程:

  1. 得到key

  2. 通过hash函数得到hash值

  3. 得到桶号(一般都为hash值对桶数求模)

  4. 比较桶的内部元素是否与key相等,若都不相等,则没有找到。

  5. 取出相等的记录的value。

一大片内存分成多个”桶”,然后将值hash后放入桶中

 

hash_map && map

构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数). 

存储结构。hash_map采用hash表存储,map一般采用红黑树(RB-Tree)实现

 

set 所有元素根据键值自动被排序,键值就是实值  RB-tree作为底层机制

multiset 差别 允许键值重复

hash_set hashtable作为底层机制 没有自动排序,实值就是键值

 

Bit-map 用一个bit位来标记某个元素对应的Value, 而Key即是该元素

采用了Bit为单位来存储数据,存储空间大大节俭

    原文作者:B树
    原文地址: https://blog.csdn.net/pfdai_hnu/article/details/6247121
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞