数据结构课后答案个人.docVIP

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

数据结构作业(6—9章) 理学院 信计1001 孙建伟 座机电话号码 6.4 一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。如果按层次顺序从1开始对全部结点编号,问: 1 各层的结点数目是多少? 2 编号为p的结点的父结点(若存在)的编号是多少? 3 编号为p的结点的第i个儿子结点(若存在)的编号是多少? 4 编号为p的结点有右兄弟的条件是什么?其右兄弟的编号是多少? 解: 1 2 如果p是其双亲的最小的孩子(右孩子),则p减去根结点的一个结点,应是k的整数倍,该整数即为所在的组数,每一组为一棵满k叉树,正好应为双亲结点的编号。如果p是其双亲的最大的孩子(左孩子),则p+k-1为其最小的弟弟,再减去一个根结点,除以k,即为其双亲结点的编号。 综合来说,对于p是左孩子的情况,i p+k-2 /k;对于p是右孩子的情况,i p-1 /k 如果左孩子的编号为p,则其右孩子编号必为p+k-1,所以,其双亲结点的编号为 向下取整,如1.5向下取整为1 3 结点p的右孩子的编号为kp+1,左孩子的编号为kp+1-k+1 k p-1 +2,第i个孩子的编号为k p-1 +2+i-1 kp-k+i+1。 4 当 p-1 %k ! 0时,结点p有右兄弟,其右兄弟的编号为p+1。 6.6 已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点。试求该树含有的叶子节点数目。 解:利用上题结论易得结果。设度为k的结点个数为,则总结点数为。叶子结点的数目应等于总结点数减去度不为0的结点的数目,即 6.8 证明:一棵满k叉树上的叶子结点数和非叶子结点数之间满足以下关系: 解:一棵满k叉树的最后一层 深度为h 的结点数 叶子结点数 为,其总结点数为,则非叶子结点数,从而得 6.13 假设n和m为二叉树中两结点,用1、0或#(分别表示肯定、恰恰相反或不一定)填写下表: 问 已知 前序遍历时 n在m前? 中序遍历时 n在m前? 后序遍历时 n在m前? n在m左方 n在m右左方 n是m祖先 n是m子孙 注:如果 1 离a和b最近的共同祖先p存在,且 2 a在p的左子树中,b在p的右子树中,则称a在b的左方(即b在a的右方)。 6.26 解:不妨设这8个结点为A、B、C、D、E、F、G、H,其相应的权为7、19、2、6、32、3、21、10。 A:1101 B:01 C:11111 D:1110 E:10 F:11110 G:00 H:1100 采用这种方式编码,电文最短。 6.33 解: int Visit int u,int v if u v return 1; if L[v] 0 //左子树不存在 if R[v] 0 //右子树也不存在 return 0; else // 右子树存在,继续访问右子树 if Visit u,R[v] return 1; else return 0; else // 左子树存在 if Visit u,L[v] // 左子树中存在目标 return 1; else // 左子树中没有目标,需访问右子树 if R[v] 0 // 没有右子树 return 0; else // 右子树存在,继续访问右子树 if Visit u,R[v] return 1; else return 0; 6.37 解: // 先序遍历的非递归算法 Status POTraverse BiTree& T,Status *Visit TElemType e BiTree p; Stack s; InitStack s ; p T; while p||!StackEmpty s if p // 如果根指针不空,访问根结点, // 右指针域压栈,继续遍历左子树 if !Visit p- data return ERROR; Push s,p- rchild ; p p- lchild; // 根指针已空,本子树已遍历完毕, // 退栈返回上一层,继续遍历未曾访问的结点 else Pop s,p ; return OK; 6.42 解: // 求二叉树中叶子结点的数目 Status POLeafNodeNum int& i,BiTree& T if T if !T- lchild && !T- rchild i++; POLeafNodeNum i,T- lchild ; POLeafNodeNum i,T- rchild ; return OK; 6.43 解: // 按先序交换二叉树的左右子树 Status ExchangeBiTree BiTree& T BiTree p; i

文档评论(0)

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

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

1亿VIP精品文档

相关文档