网站大量收购独家精品文档,联系QQ:2885784924

s6树的查找与应用-13[修复的]答案.pptx

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找树 满树 拟满树 丰满树 堆和堆排序 平衡树 下一章 第六章 查找 最佳查找树 Huffman算法 返回目录 B-树 6.1 查找树 l??查找树的定义 查找树T是一棵二叉树T:它或是空, 或满足下面三个条件: (1)?? 如果树T的根结点的左子树非空,那么左子树中的所有结点的键值都小于T的根结点的键值: (2)?? 如果树T的根结点的右子树非空,那么右子树中的所有结点的键值都大于T的根结点的键值。 (3)?? 树T的根结点的左、右子树也都是查找树。 也可以根据中序遍历来定义查找树: 对于一棵给定的二叉树T,如果树T中的结点的中序遍历序列是排好序的,那么称树T是一棵查找树。 #include stdio.h struct node {char date; struct node *lchild, *rchild; }; typedef struct node NODE; NODE *t , *p, *q ; Char a; 查找树t中找出给定键值a的算法: (1)若 t 为空,那么查找失败, 算法结束,否则转(2) (2)若t-data等于a,那么查找成功,算法结束,否则转(3) (3)若 t-data a, 那么 t-lchild = t ; 否则 t-rchild = t 转(1) void search( NODE *t, char a, NODE **p_p, NODE ** p_q) { *p_p=NULL; *p_q=t; while(*p_q!=NULL) { if ((*p_q)-data==a) return; *P_P=*p_q; if (a(*p_q)-data) *p_q=(*p_q)-lchild; else *p_q=(*p_q)-rchild; } } ?例:变量t指向树T的根结点, a是所要查找的键值,q指向被查找的结点,p指向被查找结点的父结点.可用如下的语句调用:search(t,a,p,q) p148 查找树插入一个键值为a的操作 int insert (NODE **p_t , char a ) { NODE *p, *q, *r; search(*p_t, a ,p,q); if (q!=NULL) return(l); r=(NODE *) malloc (sizeof (NODE)); r-data = a; r-lchild = NULL; r-rchild = NULL; if (p==NULL) * p_t = r; else if (p-dataa) p-lchild = r; else p-rchild=r; return(0); } 例:变量t指向树T的根结点,p_t =t, a是所要查找的键值,q指向被查找的结点,p指向被查找结点的父结点. 可用如下的语句调用:search(t,a,p,q) p149 结点的删除算法 (1)首先调用serach(),从而确定被删除结点在树中的位置。 (2) 若被删结点不在树中,则算法结束。 (3)被删结点在树中,则进行下面的删除。 (I)若被删结点是根结点 (a)若被删结点无左子结点,则用被删结点右子树作为删除后的树 (b) 若被删结点有左子结点,则用左子结点作为根,右子树作为被删结点的左子树在中序最后一个结点的右子树 (II)被删结点不是根结点 (a)若被删结点无左子结点,则 1若被删结点是它的父结点的左子结点,那么被删结点的右子树作为被删结点的父结点的左子树。 2若被删结点是它的父结点的右子结点,那么被删结点的右子树作为被删结点的父结点的右子树。 (b)若被删结点有左子结点,则把被删结点的右子树作为被删结点左子树按中序最后一个结点的右子树,同时进行。 1若被删结点是它的父结点的左子结点,那么把被删结点的左子树作为被删结点的父结点的左子树。 2若被删结点是它的父结点的右子结点,那么被删结点的左子树作为被删结点父结点

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档