[2018年最新整理]【5-3】树与森林的遍历及应用.pptVIP

[2018年最新整理]【5-3】树与森林的遍历及应用.ppt

  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文档。上传文档
查看更多
[2018年最新整理]【5-3】树与森林的遍历及应用

数据结构;第五章 树;内容提要;5.6 树与森林;1.树的存储表示;(1)双亲表示法;A;Data;双亲表示法示例;(2)孩子表示法;孩子表示法示例; 在一棵树中,由于各结点的度数不一样,因此,结点的指针域个数的设置有两种方法:;多重链表示例;孩子表示法的特点;(3)双亲-孩子表示法;;(4)孩子-兄弟表示法; data;孩子-兄弟表示法的特点;树节点定义;template class T class Tree { //树类 private: TreeNodeT *root, *current; //根指针及当前指针 int Find (TreeNodeT *p, T value); //在以p为根的树中搜索value void RemovesubTree (TreeNodeT *p); //删除以p为根的子树 bool FindParent (TreeNodeT *t, TreeNodeT *p); //在以t为根的子树中, 寻找p的父节点,并置为当前节点 public:; Tree () { root = current = NULL; } //构造函数 bool Root (); //置根结点为当前结点 bool IsEmpty () { return root == NULL; } bool FirstChild (); //将当前结点的第一个子女置为当前结点 bool NextSibling (); //将当前结点的下一个兄弟置为当前结点 bool Parent (); //将当前结点的双亲置为当前结点 bool Find (T value); //搜索含value的结点, 使之成为当前结点 …… //树的其他公共操作 };;树类的部分实现;template class T bool TreeT::FindParent (TreeNodeT *t, TreeNodeT *p) { //在根为*t的树中找*p的双亲, 并置为当前结点 TreeNodeT *q = t-firstChild; //*q是*t长子 bool succ; while (q != NULL q != p) { //扫描兄弟链 if ((succ = FindParent (q, p)) == true) return succ; //递归搜索以*q为根的子树 q = q-nextSibling; } if (q != NULL q == p) { current = t; return true; } else { current = NULL; return false; } //未找到 };template class T bool TreeT::Parent () { //置当前结点的双亲结点为当前结点 TreeNodeT *p = current; if (current == NULL || current == root) { current = NULL; return false; } //空树或根无双亲 return FindParent (root, p); //从根开始找*p的双亲结点 };template class T bool TreeT::FirstChild () { //在树中找当前结点的长子, 并置为当前结点 if (current current-firstChild ) { current = current-firstChild; return true; } current = NULL; return false; };template class T bool TreeT::NextSibling () { //在树中找当前结点的兄弟, 并置为当前结点 if (current current-nextSibling) { current = current-nextSibl

文档评论(0)

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

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

1亿VIP精品文档

相关文档