数据结构 第8章 查找new学习资料.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第八章查找;8.1查找的基本概念;3、查找;4、查找表的分类;5、平均查找长度;6、查找的基本方法:;8.2基于线性表的查找法;#defineLIST_SIZE20

typedefstruct{

KeyTypekey;

OtherTypeother_data;

}RecordType;

typedefstruct{

RecordTyper[LIST_SIZE+1];

/*r[0]为工作单元*/

intlength;

}RecordList;;顺序查找过程示例:;2、顺序查找算法;例:;3、顺序查找的时间复杂度分析;二、折半查找法(二分法查找法);例如:;2、折半查找算法;3、折半查找时间复杂度分析;一般情况,表长为n的折半查找判定树的深度和含有n个结点的完全二叉树的深度相同。;三、分块查找法(索引顺序表查找);例:;分块查找过程;分块查找时间复杂度分析;8.3基于树的查找法;8.3.1二叉排序树(二叉查找树);一、定义:;例如:;typedefstructnode

{KeyTypekey;/*关键字的值*/

……

structnode*lchild,*rchild;/*左右指针*/

}bstnode,*BSTree;;二、查找;例如:;从上述查找过程可见:;BSTreeSearchBST(BSTreebst,KeyTypekey)

{if(!bst)returnNULL;

else

if(bst-key==key)returnbst;

else

if(keybst-key)

returnSearchBST(bst-lchild,key);

else

returnSearchBST(bst-rchild,key);

};BSTreeSearchBST(BSTreebst,KeyTypekey)

{BSTreeq;q=bst;

while(q)

{if(q-key==k)returnq;

if(keyq-key)q=q-lchild;

elseq=q-rchild;

}

returnNULL;

};三、插入;voidInsertBST(BSTree*bst,KeyTypekey)

{BiTrees;

if(*bst==NULL)

{s=(BSTree)malloc(sizeof(BSTNode));

s-key=key;*bst=s;

s-lchild=NULL;s-rchild=NULL;}

else

if(key(*bst)-key)

InsertBST(((*bst)-lchild),key);

else

if(key(*bst)-key)

InsertBST(((*bst)-rchild),key);

};二叉排序树的生成算法;例如:;对同样一组元素值,如果输入的顺序不同,所建的二叉排序树形态也不同。;四、删除;(1)被删除的结点是叶子结点;(2)被删除结点只有左子树或只有右子树;(3)被删除的结点既有左子树也有右子树;方法二:;例:???法二;二叉排序树删除算法;else/*p有左子树*/

{q=p;s=p-lchild;

while(s-rchild)

{q=s;s=s-rchild;}

if(q==p)q-lchild=s-lchild;

elseq-rchild=s-lchild;

p-key=s-key;

free(s);

}

returnt;};五、二叉排序树的查找性能;假设每个元素的查找概率相等,则它们的平均查找长度分别是:;8.3.2平衡二叉排序树;例如:;例如:;2、平衡二叉排序树的构造;例:输入(13,

文档评论(0)

ouyangxiaoxin + 关注
实名认证
内容提供者

一线鞋类设计师,喜欢整理收集文档。

1亿VIP精品文档

相关文档