第七章 查找单元小结(1)基本概念 二叉树 B树

小细节:

1.若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找结果可给出一个“空”记录或“空”指针

2.动态查找表:表结构是在查找过程中产生的,即在创建表的过程中,对于给定值,若表中存在其关键字等于给定值的记录,则返回查找成功;

否则插入关键字等于给定值的记录

顺序查找:1.适用于线性表的顺序存储结构,又适用于链式存储结构;

     2.时间复杂度O(n),空间复杂度O(1) 

     3.优点:算法简单,对表结构没有要求,且对记录是否按关键字有序均可应用

     4.缺点:平均查找长度较大,查找效率较低,n很大的时候不适合用

折半查找:1.线性表必须采用顺序存储结构,而且表中的元素按关键字有序排列;

     2.时间复杂度O(log2 n)

     3.在查找成功与否的情况下:和给定值进行比较的关键字个数最多也不超过向下取整的(log2 n )+1

     4.优点:比较次数少,查找效率高;

     5.缺点:对表的要求高,一定要是顺序存储,且关键字必须有序;费时:1.查找前排序;2.对有序表进行插入和删除的时候,平均比较和移动表中一半的元素

     6.折半查找不适用于数据元素经常变动的线性表

分块查找:1.优点:.在表中插入和删除元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除。由于块内无序,故插入和删除比较容易,无序进行大量移动

     2.缺点:要增加一个索引表的存储空间并对索引表进行排序运算

     3.适用于动态变化的线性表

!!!!!这是一条分界线:为了保护表的有序性,线性表的查找更适用于静态查找表,若要对动态查找表进行高效率的查找,可采用几种特殊的二叉树作为查找表的组织形式,在此统称“树表”

 树表的查找

1.二叉排序树:又称二叉查找树;!!!!中序遍历一课二叉排序树时可以得到一个节点值递增的有序序列

2.考点:①二叉树的查找,

    ②插入(在查找的基础上):当树中不存在关键字等于key的结点时才进行插入。新插入的结点一定是新添加的叶子结点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子。

    时间复杂度O(log2 n)

    ③创建

假设有n个结点,需要n此插入操作,而插入一个结点的算法时间复杂度是O(log2 n),所以创建二叉排序树算法的时间复杂度为O(nlog2 n)

    ④删除

    基本过程还是在查找,时间复杂度O(log2 n)

    删除结点为*p(指向结点的指针为p),其双亲结点为*f,PL和PR分别表示其左子树和右子树

    1)*p结点的左右结点均为空:f->lchild=NULL

    2)  *p结点只有左子树PL或者右子树PR,此时直接令PL  或PR直接成为其双亲结点*f的左子树即可

      f->lchild=p->lchild;(或f->lchild=p->rchild)

    3)*p结点左右子树均不为空:

    总结:①缺右子树用左孩子填补;②缺左子树用右孩子填补;③在左子树上找中序最后一个结点填补

 

    

 

posted on 2019-06-01 11:28  流星雨lxy  阅读(125)  评论(0编辑  收藏  举报

导航