计算机统考408 计算机统考408-2014答案解析.pdf

计算机统考408 计算机统考408-2014答案解析.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2014 年计算机学科专业基础综合试题参考答案 一、单项选择题 1. C 2 . B 3 . A 4 . D 5 . C 6 . D 7 . D 8. D 9 . D 10.B 11.C 12.D 13.C 14.A 15.A 16.D 17.A 18.C 19.C 20 .C 21 .D 22 .B 23 .A 24 .B 25 .D 26 .A 27 .A 28 .C 29 .B 30 .A 31 .C 32 .D 33 .C 34 .B 35 .D 36 .C 37 .B 38 .A 39 .B 40 .D 二、综合应用题 41 .解答: 1)算法的基本设计思想: ① 基于先序递归遍历的算法思想是用一个static 变量记录wpl,把每个结点的深度作为递归函数的一个参数传递, 算法步骤如下: 若该结点是叶子结点,那么变量wpl 加上该结点的深度与权值之积; 若该结点非叶子结点,那么若左子树不为空,对左子树调用递归算法,若右子树不为空,对右子树调用递归算法, 深度参数均为本结点的深度参数加1; 最后返回计算出的wpl 即可。 ② 基于层次遍历的算法思想是使用队列进行层次遍历,并记录当前的层数, 当遍历到叶子结点时,累计wpl ; 当遍历到非叶子结点时对该结点的把该结点的子树加入队列; 当某结点为该层的最后一个结点时,层数自增1; 队列空时遍历结束,返回wpl 。 2 )二叉树结点的数据类型定义如下: typedef struct BiTNode{ int weight; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; 3 )算法代码如下: ① 基于先序遍历的算法: int WPL (BiTree root){ return wpl_PreOrder(root, 0); } int wpl_PreOrder(BiTree root, int deep){ static int wpl = 0; //定义一个static变量存储wpl if(root-lchild == NULL root-lchild == NULL) //若为叶子结点,累积wpl wpl += deep*root-weight; if(root-lchild != NULL) //若左子树不空,对左子树递归遍历 wpl_PreOrder(root-lchild, deep+1); if(root-rchild != NULL) //若右子树不空,对右子树递归遍历 wpl_PreOrder(root-rchild, deep+1); return wpl; } ② 基于层次遍历的算法: #define MaxSize 100 //设置队列的最大容量 int wpl_LevelOrder(BiTree root){ BiTree q[MaxSize]; //声明队列,end1 为头指针,end2 为尾指针 int end1, end2; //队列最多容纳MaxSize-1个元素 end1 = end2 = 0; //头指针指向队头元素,尾指针指向队尾的后一个元素 int wpl = 0, deep = 0; //初始化wpl 和深度 BiTree lastNode; //lastNode用来记录当前层的最后一个结点 BiTree newlastNode; /

文档评论(0)

花开富贵 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档