zoukankan      html  css  js  c++  java
  • 搜索树总结

    1.二叉数排序树(Binary Sort Tree)

      定义:或者是一颗空树;或者满足以下3个条件:

        1.若它的左子树不空,则它的左子树上的所有节点的值均小于它的根节点的值

        2.若它的右子树不空,则它的右子树上的所有节点的值均大于它的跟节点的值

        3.它的左子树和右子树都是二叉排序树

    2.平衡二叉树(Balanced Binary Tree 或 Height-Balanced Tree),又称AVL树。

      定义:或者是一颗空树;或者满足以下两个条件:

        1.它的左子树和右子树都是平衡二叉树

        2.左子树和右子树的深度之差的绝对值不超过1

    3.B-树

      定义:一颗B-树,或为空树,或为满足下列特性的m叉树:

        1.树中的每个节点之多有m棵字数;

        2.若根节点不是叶子节点,则至少有两棵子树;

        3.除根节点之外的所有非终端节点至少有ceil(m/2)棵子树;

        4.所有的非终端节点中包含下列信息数据

          (n,A0,K1,A1,K2,A2,...,Kn,An)

        其中:Ki(i=1,...,n)为关键字,且Ki<Ki+1(i=1,...,n-1);Ai(i=0,...,n)为指向根结点的指针,且Ai-1所指子树中所有结点的关键字均小于Ki,An所指子树中所有结点的关键字均大于Knn(ceil(m/2)-1<=n<=m-1)为关键字的个数(或n+1为子树个数)。

        5.所有的叶子节点都出现在同一层次上,并且不带信息(可以看作是外部节点或查找失败的节点,实际这些节点不存在,指向这些节点的指针为空)。

      

    4.B+树

      定义:一棵M阶的B+树和m阶的B-树的差异在于:

      1.有n棵子树的节点中含有n个关键字。

      2.所有的叶子节点中包含了全部的关键字信息,及指向含这些关键字记录的指针,且叶子节本身依关键字的大小自小而大的顺序链接。

      3.所有非终端节点可以看成是索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字

      

      B*树:B*-tree是B+-tree的变体

      1.在B+树的基础上,所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针);

      2.B*树中非根和非叶子结点再增加指向兄弟的指针;

      3.B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2)
      

    5.键树

      定义:键树是一种特殊的查找树,它的某个节点不是包含一个或多个关键字,而是只包含组成关键字的一部分(字符或数字),比如:如果关键字是数值,则节点中只包含一个数位;如果关键字是单词,则节点中只包含一个字母字符。

    6.2-3-4树

      

    7.红黑树

      定义:红黑树是具有下列着色性质的二叉查找树:

      1.每个节点或者着红色,或者着黑色。

      2.根是黑色的。

      3.如果一个节点是红色的,那么它的子节点必须是黑色的。

      4.从一个节点到一个null引用的每一条路径必须包含相同数目的黑色节点。

    8.后缀树

      未完待续

    9.R树

      未完待续

  • 相关阅读:
    SPU和SKU有什么区别
    Mave手动安装jar包
    maven国内镜像(国内oschina的maven服务器关了)
    用java代码将从数据库中取出的具有父子关系的数据转成json格式
    Oracle中的decode()函数
    Oracle中的instr()函数
    Oracle的nvl
    Oracle保留小数点后两位的几种方法
    【Python】djangorestframework 基于django框架的接口开发
    【MySQL】 GTID使用
  • 原文地址:https://www.cnblogs.com/zhutianpeng/p/4251744.html
Copyright © 2011-2022 走看看