【考研类试卷】计算机学科专业基础综合数据结构-5及答案解析.doc
《【考研类试卷】计算机学科专业基础综合数据结构-5及答案解析.doc》由会员分享,可在线阅读,更多相关《【考研类试卷】计算机学科专业基础综合数据结构-5及答案解析.doc(8页珍藏版)》请在麦多课文档分享上搜索。
1、计算机学科专业基础综合数据结构-5 及答案解析(总分:100.00,做题时间:90 分钟)一、综合应用题(总题数:10,分数:100.00)一棵高度为 h 的满 m 叉树有如下性质:第 h 层上的结点都是叶结点,其余各层上每个结点都有 m 棵非空子树。如果按层次自顶向下,同一层自左向右,顺序从 1 开始对全部结点进行编号,试问:(分数:20.00)(1).各层的结点个数是多少?(分数:4.00)_(2).编号为 i 的结点的父结点(若存在)的编号是多少?(分数:4.00)_(3).编号为 i 的结点的第 k 个子女结点(若存在)的编号是多少?(分数:4.00)_(4).编号为 i 的结点有右兄
2、弟的条件是什么?其右兄弟结点的编号是多少?(分数:4.00)_(5).若结点个数为 n,则高度 h 是 n 的什么函数关系?(分数:4.00)_针对二叉树 BiTree,利用二叉树遍历的思想编写解决下列问题的递归算法。(分数:24.00)(1).int size(BiTNode * t); /返回以 * t 为根的二叉树中所有结点个数(分数:4.00)_(2).int leaves(BiTNode * t); /返回以 * t 为根的二叉树的叶结点个数(分数:4.00)_(3).int height(BiTNode * t); /返回以 * t 为根的二叉树的高度(分数:4.00)_(4).i
3、nt level(BiTNode * t,BiTNode * p);/返回二叉树指定结点 * p 在以 * t 为根的子树中的层次(分数:4.00)_(5).void reflect(BiTNode * t); /交换以 * t 为根的二叉树中每个结点的两个子女(分数:4.00)_(6).void defoliate(BiTNode * /访问(输出)根结点 Preorder(t-lchild); /前序遍历根的左子树 Preorder(t-rchild); /前序遍历根的右子树 (分数:8.00)(1).改写 PreOrder 算法,消去第二个递归调用 PreOrder(t-rchild);
4、(分数:4.00)_(2).利用栈改写 PreOrder 算法,消去两个递归调用。(分数:4.00)_请回答下列关于图的一些问题:(分数:15.00)(1).有 n 个顶点的有向强连通图最多有多少条边?最少有多少条边?(分数:5.00)_(2).表示一个有 1000 个顶点、1000 条边的有向图的邻接矩阵有多少个矩阵元素?是否为稀疏矩阵?(分数:5.00)_(3).对于一个有向图,不用拓扑排序,如何判断图中是否存在环?(分数:5.00)_4.在有关图的算法中常用到两个图的操作: int getFirstNeighbor (Graph G,int v); /取顶点 v 的第一个邻接顶点 int
5、 getNextNeighbor(Graph G,int v,int w); /取邻接顶点 w 的下一邻接顶点 试分别给出在邻接矩阵和邻接表为存储结构的情形下它们的实现。 (分数:5.00)_计算机学科专业基础综合数据结构-5 答案解析(总分:100.00,做题时间:90 分钟)一、综合应用题(总题数:10,分数:100.00)一棵高度为 h 的满 m 叉树有如下性质:第 h 层上的结点都是叶结点,其余各层上每个结点都有 m 棵非空子树。如果按层次自顶向下,同一层自左向右,顺序从 1 开始对全部结点进行编号,试问:(分数:20.00)(1).各层的结点个数是多少?(分数:4.00)_正确答案:
6、()解析:可以参照二叉树的性质,将其扩展到 m 叉树。 因为第 1 层有 1 个结点,第 2 层有 m 个结点,第 3 层有 m 2 个结点一般地,第 i 层有 m i-1 个结点(1ih)。(2).编号为 i 的结点的父结点(若存在)的编号是多少?(分数:4.00)_正确答案:()解析:在 m 叉树的情形,结点 i 的第 1 个子女编号为 j=(i-1)m+2。反过来,结点 i 的双亲的编号是,根结点没有双亲,所以以上计算式要求 i1。如果考虑对于 i=1 也适用(根的双亲设为 0),可将上式改为(3).编号为 i 的结点的第 k 个子女结点(若存在)的编号是多少?(分数:4.00)_正确答
7、案:()解析:因为结点 i 的第 1 个子女编号为(i-1)m+2,若设该结点子女的序号为 k=1,2,m,则第 k 个子女结点的编号为(i-1)m+k+1(1km)。(4).编号为 i 的结点有右兄弟的条件是什么?其右兄弟结点的编号是多少?(分数:4.00)_正确答案:()解析:当结点 i 不是其双亲的第 m 个子女时才有右兄弟。若设其双亲编号为 j,可得 j= (5).若结点个数为 n,则高度 h 是 n 的什么函数关系?(分数:4.00)_正确答案:()解析:若结点个数为 n,则有 针对二叉树 BiTree,利用二叉树遍历的思想编写解决下列问题的递归算法。(分数:24.00)(1).in
8、t size(BiTNode * t); /返回以 * t 为根的二叉树中所有结点个数(分数:4.00)_正确答案:()解析:返回以 * t 为根的二叉树中所有结点个数: int size(BinTreeNode * t) if(t=NULL)return 0; return 1+size(t-lchild)+size(t-rchild); (2).int leaves(BiTNode * t); /返回以 * t 为根的二叉树的叶结点个数(分数:4.00)_正确答案:()解析:返回以 * t 为根的二叉树中叶结点个数: int leayes(BiTNode * t) if(t=NULL) r
9、eturn 0; if(t-lchild=NULL return leayes(t-lchild)+leayes(t-rchild); (3).int height(BiTNode * t); /返回以 * t 为根的二叉树的高度(分数:4.00)_正确答案:()解析:返回以 * t 为根的二叉树的高度: int height(BiTNode * t) if(t=NULL)return 0; int h1=height(t-lchild); int hr=height(t-rchild); if(h1hr)return h1+1; else return hr+1; (4).int level
10、(BiTNode * t,BiTNode * p);/返回二叉树指定结点 * p 在以 * t 为根的子树中的层次(分数:4.00)_正确答案:()解析:返回以 * t 为根的二叉树中指定结点 * p 所在层次: int level(BiTNode * t,BiTNode * p,int d) if(t=NULL) return 0; if(t=p) return(d); int level; if(level=level (t-lchild,p,d+1) return (level1); else return (level (t-rchild,p,d+1); (5).void reflec
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 试卷 计算机 学科专业 基础 综合 数据结构 答案 解析 DOC
