数据结构作业(2).doc_第1页
数据结构作业(2).doc_第2页
数据结构作业(2).doc_第3页
数据结构作业(2).doc_第4页
数据结构作业(2).doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.7 编写一个递归函数计算二叉树的高度。int height(BinNode* subroot) if (subroot = NULL) return 0; return 1+max(height(subroot-left(),height(subroot-right(); /树的高度等于最深结点的深度加15.8 编写一个递归函数计算二叉树的叶结点数。int count(BinNode* subroot) if (subroot = NULL) return 0; / 空树 if (subroot-isLeaf() return 1; / 只有一个根结点 else return 1 + count(subroot-left() + count(subroot-right();编写函数将二叉树中所有结点的左、右子树相互交换。void exchange(bitree t) /左、右子树交换bitree p; if(t!=NULL) p=t-lchild; t-lchild=t-rchild; t-rchild=p exchange(t-lchild); exchange(t-rchild); 编写前序周游二叉树的非递归函数。void preOrder1(TNode* root) Stack S; while (root != NULL) | !S.empty() if (root != NULL) Visit(root); S.push(root); / 先访问,再入栈 root = root-left; / 依次访问左子树 else root = S.pop(); / 回到父亲节点 root = root-right; 5.6 编写一个算法,传入参数为二叉树根结点的指针,并按照层次顺序将结点的值打印出来。层次顺序首先打印根节点,接着是第一层的所有结点,再接着是第二层的所有结点,依此类推。提示:前序周游利用栈递归调用。考虑使用其他数据结构实现层次顺序周游。void level(BinNode* subroot) AQueueBinNode*Q; Q.enqueue(subroot); while(!Q.isEmpty() BinNode* temp; Q.dequeue(temp); if(temp != NULL) Print(temp); Q.enqueue(temp-left(); Q.enqueue(temp-right(); 试写一个判断给定二叉树是否为二叉检索树的算法, 设此二叉树以链式结构存储。 (根比左子树的最大值大,比右子树最小值小)int IsSearchTree(const BTNode *t) if(!t) return 1; /空二叉树情况 else if(!(t-lchild) & !(t-rchild)return 1; /左右子树都无 else if(t-lchild) & !(t-rchild)/只有左子树情况 if(t-lchild-datat-data) return 0; else return IsSearchTree(t-lchild); else if(t-rchild) & !(t-lchild) /只有右子树情况 if(t-rchild-datadata) return 0; else return IsSearchTree(t-rchild); else/左右子树全有情况 if(t-lchild-datat-data) |(t-rchild-datadata) return 0; else return IsSearchTree(t-lchild) & IsSearchTree(t-rchild); 6.6 使用重量权衡合并规则与路径压缩,对下列从0到15之间的数的等价对进行归并,并给出所得树的父指针表示法的数组表示。在初始情况下,集合中的每个元素分别在独立的等价类中。当两棵树规模同样大时,使结点值较大的根结点作为值较小的根结点的子结点。(0,2)(1,2)(3,4)(3,1)(3,5)(9,11)(12,14)(3,9)(4,14)(6,7)(8,10)(8,7)(7,0)(10,15)(10,13) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 0 0 0 0 0 0 6 0 0 0 9 0 0 12 06.7 使用重量权衡合并规则与路径压缩,对下列从0到15之间的数的等价对进行归并,并给出所得树的父指针表示法的数组表示。在初始情况下,集合中的每个元素分别在独立的等价类中。当两棵树规模同样大时,使结点值较大的根结点作为值较小的根结点的子结点。(2,3)(4,5)(6,5)(3,5)(1,0)(7,8)(1,8)(3,8)(9,10)(1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论