数据结构之搜索树(二)

1. B树

  • 定义:
    动机:对于元素数目大的数据,通过建立索引或者多级索引便于查找—索引表。

    为什么大型数据库不使用二叉搜索树?

    内存与外存的访问速度相差了5-6个数量级,因此在访问时,应当减少对外存的访问,当内存不足以容纳数据时,二叉树的搜索效率大打折扣,查找过程中对外存的访问次数过多。而对于外部存储器而言,批量读取物理地址与单个字节没有区别,因此通过多次内存操作代替单次内存操作。也就是使用多路搜索树。

  • M阶B-树:一棵m叉平衡搜索树。
    特征:(1)根节点至少有两个孩子。
    (2)除根节点外,内部节点至少有M/2向上取整个孩子。//也就是说内部节点的元素个数至少为M/2向下取整。
    (3)所有外部节点位于同一层。
    –还应符合m阶搜索树的条件:
    (4)内部节点最多有m个子女以及1~m-1个元素。
    (5)p个元素的节点,有p+1个元素的子女。
    (6)以ci为根的子树,关键值在ki–>ki+1范围内。
    高度:logm(N+1)<=H<=logd((N+1)/2)+1,d为M/2向上取整
    插入:
    节点分裂

     若插入之前的元素小于m-1,则属于普通插入。
     若插入之前的节点元素等于m-1,则已经饱和,插入时进行分裂,将中心节点提升至父节点,若父节点仍旧饱和,那么进行回溯,分裂直至根节点。
    

    删除:
    节点借用
    节点合并

     若删除节点为叶节点或者节点元素>d-1,那么为普通删除。
     若删除之前的元素个数=d-1,则删除后不满足节点最小值,若兄弟节点存在多余元素,则从兄弟元素中借用(同时需要将兄弟的边界节点提升至父节点,父节点元素下降到删除节点);若兄弟元素无多余元素,则进行合并,将其与兄弟节点以及两者的父节点合并。若合并后依旧不够,那么继续进行节点合并回溯。
    

2. B+树

  • B树、B+树区别
    B+树:所有Key都存在叶节点中,非叶节点中的key是对叶节点中key的复写;叶节点包含了所有Key,叶节点本身按照Key从小到大链接。

    B+树

  • 插入:

     先查找合适位置插入,若插入合法,则结束;若非法,则将节点均匀分裂,更新父节点,不停回溯检查父节点,直至结束。
    
  • 删除:

    若删除位置是叶节点,则直接删除;删除后满足最小元素要求,也直接删除。若不满足,先从兄弟借元素,若兄弟元素也不够,合并兄弟节点。
    

3. 红黑树:一种特殊的具有外部节点的二叉搜索树,2-3-4树的二叉树实现。

  • 定义&&条件
    (1)根节点和所有外部节点的颜色是黑的。
    (2)根至外部节点的路径上没有连续红节点。
    (3)根至外部节点的所有路径上黑节点数目相同。
    黑边指向黑节点,红边指向红节点。

    边的特点:内部节点指向外部节点的边是黑的;从根至外部节点的路径上没有连续红边;所有根至外部节点的路径黑边数目相同。
    

    节点的阶:从该节点到其子树任意外部节点的黑指针数目。
    红黑树

  • 2-3-4(4阶B树)与红黑树
    红边:红边连接的节点中的关键字,在2-3-4树中位于同一节点内。
    黑边:父子关系。
    2-3-4与红黑树对比

  • 红黑树特性
    (1)设P,Q是两条从根节点至外部节点的路径,那么路径长度也即指针数量关系:Length(P)<=2*Length(Q)
    (2)h是红黑树高度(不含外部节点),n是内部节点的数目,r是根节点的阶。
    h<=2r;n>=2^r-1; h<=2log2(N+1)

  • 红黑树描述
    外部节点无需实际保存;每个节点的描述包括节点颜色,以及左右两个指针的颜色。

  • 红黑树插入:等同于二叉搜索树,O(logN)

    插入节点的颜色为红色。(若为黑色,那么违反了从节点到外部节点黑指针数目确定的性质)。
    若连续红边:(1)祖父的另一个孩子为黑色----->采用”旋转,根黑子红的策略。“(2)祖父的另一个孩子为红色---->采用”不旋转,根红子黑的策略。“
    
  • 红黑树删除:类二叉搜索树,转化为叶节点删除。自底向上删除,删除红节点(3,4)结束,删除黑节点(2)回溯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值