65树与等价问题.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
65树与等价问题

6.5树与等价问题 下图中,等价关系的一个有序对为 6,8 ,则s1和s2需要合并。 // #define MAX_TREE_SIZE 100 Typedef struct PTNode TElemType data; Int parent; //双亲位置域。 PTNode; Typedef struct PTNode nodes[MAX_TREE_SIZE]; int n; //结点数。 PTree; // typedef PTree MFSet; int find_mfset MFSet S,int i //找集合S中i所在子集的根。 if i 1 || i S.n return -1; //i不属S中任一子集。 for j i;S.nodes[j].parent 0;j S.nodes[j].parent ; return j; // find_mfset Status merge_mfset MFSet S,int i,int j //S.nodes[i]和S.nodes[j]分别为S的互不相交的两个子集Si和Sj的根结点。 //求并集Si∪Sj. if i 1 || i S.n || j 1 || j S.n reurn ERROR; S.nodes[i].parent j; return OK; //merge_mfset //为解决下图并操作结果树过深,修改并函数。 //修改存储结构:根节点的parent域存储子集中所含成员数目的负值。 void mix_mfset MFSet S,int i,int j //S.nodes[i]和S.nodes[j]分别为S的互不相交的两个子集Si和Sj的根结点。 //求并集Si∪Sj. if i 1 || i S.n || j 1 || j S.n return ERROR; if S.nodes[i].parent S.nodes[j].parent //Si所含成员数比Sj少。 S.nodes[j].parent+ S.nodes[i].parent; S.nodes[i].parent j; //if S.nodes[i].parent S.nodes[j].parent else S.nodes[i].parent+ S.nodes[j].parent; S.nodes[j].parent i; // else_if S.nodes[i].parent S.nodes[j].parent return OK; // mix_mfset 例6-1:假设集合S x|1≤x≤n是正整数 ,R是S上的一个等价关系。 R (1,2),(3,4),(5,6),(7,8),(1,3),(5,7),(1,5),... 现求S的等价类。 //修改find_mfset函数,查找同时压缩路径。 int fix_mfset MFSet S,int i //确定i所在子集,并将从i至根路径上所有节点都变成根的孩子节点。 if i 1 ||i S.n return -1; //i不是S中任一子集的成员。 for j i;S.nodes[j].parent 0;j S.nodes[j].parent ; for k i;k! j;k t t S.nodes[k].parent;S.nodes[k].parent j; return j; // fix_mfset s1∪s2∪s3 2 3 s1∪s2 1 s1∪s2...∪sn 1 2 1 Sn n ... S1 S3 S2 6 9 3 S3 s1∪s2 8 10 1 S2 2 10 9 3 1 8 2 S1 6 2 1 3 n-1 n . . . . . . n个集合 “并”操作 n ... 9 8 7 6 4 3 9 8 7 6 5 3 5 2 1 4 ... n 2 1 a压缩路径之前 b压缩路径之后 R的下一个有序对为(8,9),执行fix_mfset(s,8)前后对比 S.nodes MIX S,5,6 -1 -1 7 -2 5 -2 MIX S,1,2 MIX S,3,4 3 -1 … -1 -1 -1 -1 -1 -1 -1 -1 -1 9 8 7 6 5 4 3 2 1 MIX S,7,8 -2 1 n 9 8 7 6 5 4 3 2 MIX S,1,3 MIX S,5,7 n … S.nodes -2 1 -1 -1 7 5 5 -4 3 1 1 n 9 8 7 6 5 4 3 2 MIX S,1,5 … S.nodes -4 1 -1 -1 7 5 5 1 3 1 1 n 9 8 7 6 5 4 3 2 等价关系的一个有序对为 6,8 ,则

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档