[考研类试卷]计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9及答案与解析.doc
《[考研类试卷]计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9及答案与解析.doc》由会员分享,可在线阅读,更多相关《[考研类试卷]计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9及答案与解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编 9 及答案与解析一、填空题1 二叉树按某种顺序线索化后,任一结点均有指向前驱和后继的线索,这种说法是正确的么?_【南京理工大学 2005 二、9(1 分)】2 线索二元树的左线索指向其_,右线索指向其_。【哈尔滨工业大学 2000 二、3 (2 分) 】3 将一棵树转换成二叉树后,根结点没有_子树。【电子科技大学 2005二、2(1 分) 】4 哈夫曼树是_。【北京理工大学 200l 七、 4(2)】【长沙铁道学院 1998二、3(2 分) 】5 若以4 ,5 ,6,7,8 作为叶子结点的权值构造哈夫曼树,则其带权路径长度是_。【西 安
2、电子科技大学 2001 软件一、3(2 分)】【厦门大学 2002 六、2(4 分)】【中南大学 2005 二、8(2 分) 】6 有数据 WG=7,19,2 ,6,32,3,21,10),则所建 Huffman 树的树高是(1) ,带权路径长度 wPL 为(2) 。【南京理工大学 1999 三、6(4 分)】7 有一份电文中共使用 6 个字符:a,b,C,d,e,f 它们的出现频率依次为2,3,4,7,8,9,试构造一棵哈夫曼树,则其加权路径长度 WPL 为(1),字符 C的编码是(2)。 【中国矿业大学 2000 一、7(3 分) 】8 设字符 a, b,c ,d,e,f 的使用频度分别为
3、 3,4,9,12,15,20,则 b,d 的哈夫曼编码分别为_,_。【大连理工大学 2005 一、5(2 分)】9 设 no 为哈夫曼树的叶子结点数目,则该哈夫曼树共有_个结点。 【西安电子科技大学 1999 软件一、2(2 分)】10 将二叉树 6f 中每一个结点的左右子树互换的 C 语言算法如下,其中ADDQ(Q,bt),DELQ(Q),EMPTY(Q)分别为进队、出队和判别队列是否为空的函数,请填写算法中空白之处,完成其功能。【北京科技大学 2000 二(10 分)】typedef struct nodeint data;struct node*ichild,*rchild;)btno
4、de;void EXCHANGE(btnode*bt)btnode*p,*q;if(bt)ADDQ(Q11 下面是求二又树高度的类 Pascal(注:编者略)及类 C 写的递归算法,试补充完整。【说明】二叉树的两指针域为 lchild 与 rchild,算法中 P 为二叉树的根,lh 和砌分别为以 P 为根的二叉树的左子树和右子树的高,hl 为以 P 为根的二叉树的高,hi 最后返回。height(p)if(1)if(p 一Ichild=null)lh=(2) ;else lh=(3) ;if(p 一rchiid=null)rh=(4) ;else rh=(5) ;if(1hrh)hi=(6)
5、 ;else hi=(7) ;else hi=(8);return hi;【南京理工大学 1997 三、8(1 5 分)】12 二叉树中序遍历的非递归算法。Status Inorder(BiTree T)InitStatck(S); push(S,T);while( (1)while(gettop(S,P) tree stack500,int tp=0 ;(1)while(tp=0)(2)if(3) )r=p-ichild;p 一ichild=p-rchild;p 一rchild=r;stack(4) =p 一ichild;stack+tp=p 一rchiid ;【中科院自动化研究所 1994
6、 二、2(15 分)】14 设一棵二叉树的结点定义为 struct BinTreeNodeElemType data;BinTreeNode*leftchild ,*rightchild ;)现采用输入广义表表示建立二叉树。具体规定如下:(1)树的根结点作为由子树构成的表的表名放在表的最前面。(2)每个结点的左子树和右子树用逗号隔开。若仅有右子树没有左子树,逗号不能省略。(3)在整个广义表表示输入的结尾加上一个特殊的符号(例如“#”) 表示输入结束。例如,对于如右图所示的二叉树,其广义表表示为 A(B(G),E(G),C(F) 。此算法的基本思路是:依次从保存广义表的字符串 ls 中输入每个字
7、符。若遇到的是字母(假设以字母作为结点的值),则表示是结点的值,应为它建立一个新的结点,并把该结点作为左子女(当 k=1)或右子女 (当 k=2)链接到其双亲结点上。若遇到的是左括号“(”,则表明子表的开始,将 k 置为 1;若遇到的是右括号“)” ,则表明子表结束。若遇到的是逗号“ ,” ,则表示以左子女为根的子树处理完毕,应接着处理以右子女为根的子树,将 k 置为 2。在算法中使用了一个栈 s,在进入子表之前,将根结点指针进栈,以便括号内的子女链接之用。在子表处理结束时退栈。相关的栈操作如下: MakeEmpty(s) 置空栈 Push(s,p) 元素 p 进栈 Pop(s) 退栈 Top
8、(s) 存取栈顶元素的函数下面给出了建立二叉树的算法,其中有 5 个语句缺失,请阅读此算法并把缺失的语句补上。(每空 3 分) Void creatBinTree(BinTreeNode * istream ins(1s); 把串 1s 定义为输入字符串流对象 ins; char ch; insch; 从 ins 顺序读入一个字符 while(ch!=#) 逐个字符处理,直到遇到.#.为止 swich(ch) case (:(1); k=1; break; case ):pop(s); break; case , :(2) ; break; default :p=newBinTreeNode
9、(3) ; p 一leftchild=NULL;p 一rightchild=NULL; if(BT=NULL)(4); else if(k=1)top(s)一1eftchild=p; elsetop(s)一rightchild=p; (5) ; 【清华大学 2001 六(15 分)】15 下列是先序遍历二叉树的非递归子程序,请阅读子程序(C 语言与 Pascal 语言过程功能完全相同,任选其一),填充空格,使其成为完整的算法。【同济大学 2001 三(10 分)】16 由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用
10、二叉链表表示的二叉树并打印出后序遍历序列,请写出程序中所缺的语句。#define MAX 100typedef struct Nodechar info;struct Node*llink,*rlink;)TNODE ;char predMAX,inodMAX;main(int argc,int*argv)TNODE*rootjif(argcinfo=(1) ;for(2) ; rposllink=restore(ppos+1,(4) ,k);ptr-rlink=restore(5) +k,rpos+l,n 一 1 一 k);return ptr;postorder(TNODE*ptr)if(
11、ptr=NULL)return;postorder(ptr-iiink);postorder(ptr 一rlink) ;printf(“c”,ptr 一info);【中科院计算所 2000 三(10 分)】17 说明下列程序功能,用图示给出子程序 crt_pre 的结果,并给出输出结果。#include“malloc.h”#include“stdioh”typedef struct BinNodechardata; struct BinNode*ich,*rch;)BinNode , *Bintree;struct chtp(int len;char ch100;)S;struct queue
12、struct BinNode*elem100;int front,rear ;)q;struct BinNode*bt; int ii=0;void crt_pre(Bintree*t)char c; c=schii; ii=ii+1;if(c=) *t=0;else*t=(BinNode*)malloc(sizeof(BinNode);(*t)一data=c ;crt_pre( crt_pre(if(p)q elemqrear+=p; qelemqrear+:0;while(qfront!=qrear)t=qelemcqfront+;if(t)w+;if(t 一ich)qelemqrear+
13、=t 一ich;if(t 一rch)qelemq rear+ :=t 一rch;else(if(qfront!=qrear)qelemqrear+=0;if(wmax)max=w;w=0:return max;main()char c=“abdeh.cfi.g!”);int i=0,num;for(i=0,s.1en=0 ;ci!=!; i+,S1en+)s chi=ci;crt_pre(num=unknown(bt);printf(“n w=dn” ,num);【北京交通大学 2006 六、1(8 分)】18 以下程序是求二叉树深度的递归算法,请填空完善之。int depth(bitree
14、bt) *bt 为根结点的指针 9(int hl,hr ;if(bt=NULL) return (1) ;hl=height(bt 一ichild) ;hr=height(bt 一rchiid);if(2)(3);return(hr+1);【西南交通大学 2000 一、11】19 下面是中序线索树的遍历算法,树有头结点且由指针 thr 指向。树的结点有五个域,分别为:数据域 data,左、右孩子域 lchild,rchild,左、右标志域ltag,rtag。规定标志域为 1 是线索,0 是指向孩子的指针。请在空格处添上适当内容,每个空格只填一个语句。inorderthread(thr)(p=t
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 试卷 计算机专业 基础 综合 数据结构 二叉 历年 汇编 答案 解析 DOC
