东北大学计算机初试历年二叉树算法题目及解答

合集下载

2003年东北大学考研计算机真题答案

2003年东北大学考研计算机真题答案

/*------------------------------------------2003数据结构部分-------------------------------------------*/ 二、已知f为单链表的表头指针,链表中存储的都是整型数据,试设计算法将此链表的结点按照递增次序进行就地排序。

void InsertSort_L(Linklist &La){//用直接插入排序使链表递增有序if(La->next){//链表不空p = La->next->next;La->next->next = Null;while(p != NULL){r = p->next; //暂存p的后继q = La;while(q->next && q->next->data < p->data)q = q->next; //查找插入位置p->next = q->next; //插入q->next = p;p = r;}//while}//if}三、给出中序线索二叉树的结点结构,试编写在不使用栈和递归的情况下先序编历中序线索二叉树的算法.void InTraveseThr(BitTree thrt){//遍历中序线索二叉树p = thrt->lchild; //p指二叉树根结点while (p!=thrt){while(p->Ltag == 0)p = p->lchild;printf(p->data);while(p->rtag == 1 && p->rchild != thrt){p = p->rchild;printf(p->data);}//whilep = p->rchild;}//while}//InTraversethr四、设关键字是一个由26个小写字母组成的字符串,哈希表的长度为26。

计算机专业基础综合(树与二叉树)-试卷2

计算机专业基础综合(树与二叉树)-试卷2

计算机专业基础综合(树与二叉树)-试卷2(总分:70.00,做题时间:90分钟)一、单项选择题(总题数:23,分数:46.00)1.单项选择题1-40小题。

下列每题给出的四个选项中,只有一个选项是最符合题目要求的。

(分数:2.00)__________________________________________________________________________________________ 解析:2.设树T的度为4,其中度为1、2、3和4的结点个数分别为4、1、1、1,则T中的叶子数为( )。

(分数:2.00)A.10B.11C.9D.7 √解析:解析:根据题中条件可知,1×4+2×1+3+4+1=4+1+1+1+n 0,由此可以得出:n 0=1×4+2×1+3+4+1-(4+1+1+1)=14-7=7。

3.用下列元素序列(22,8,62,35,48)构造平衡二又树,当插入( )时,会出现不平衡的现象。

(分数:2.00)A.22B.35C.48 √D.6248后,首次出现不平衡子树,虚线框内即为最小不平衡子树。

4.下面的算法实现了将二叉树中每一个结点的左右子树互换。

addQ(Q,bt)为进队的函数,delQ(Q)为出队的函数,empty(Q)为判别队列是否为空的函数,空白处应填的内容是( )。

typedef struct node{ int data;struct node*lchild,*rchild;}btnode;void exchange(btnode*bt){ btnode*p,*q;if(bt){ addQ(Q,bt);while(!EMPTY(Q)){ p=delQ(Q);q=p->rchild;p一>rChild=p一>lchild;( (1) )=q;if(p->lchild) ( (2) ): if(p->rchild)addQ(Q,p->rchild): } }}(分数:2.00)A.p一>lchild,delQ(Q,p->lchild)B.p->rchild,delQ(Q,p->lchild)C.p一>lchild,addQ(Q,p->lchild) √D.p->rchild,addQ(Q,p->lchild)解析:5.已知有一棵二叉树,其高度为n,并且有且只有n个结点,那么二叉树的树形有( )种。

东北大学计算机初试历年二叉树算法题目及解答

东北大学计算机初试历年二叉树算法题目及解答

[1996]设t为一棵二叉树的根结点地址指针,试设计一个非递归算法完成把二叉树中每个结点的左右孩子位置交换。

int swithLRChild(BiTree *t){ BiTree *stack[100] = {0};int stack_length = 0;if (NULL == t){return 0;}stack[stack_length++] = t;while (stack_length > 0){//pop stackBiTree *node = stack[stack_length - 1];stack_length -= 1;BiTree *temp = node->lchild;node->lchild = node->rchild; node->rchild = temp;if (NULL != node->rchild){ stack[stack_length++] = node->rchild;}if (NULL != node->lchild){stack[stack_length++] = node->lchild;}}return 1;}[1998]一棵高度为K且有n个结点的二叉排序树,同时又是一棵完全二叉树存于向量t中,试设计删除树中序号为i且具有左右孩子的一个结点,而不使存储量增加保证仍为二叉排序树(不一定是完全二叉树)的算法。

//存数据的位置是从1的索引开始的,避免需要访问索引为0的空间,避免需要频繁的索引转换void delNodeInSortedBiTree(int *sorted_bitree, int *last_index,int i){//因为题目中描述具有左右孩子,所以直接从左孩子的最右边叶子节点开始//分两种情况,左孩子没有右孩子,那么左孩子之后的节点都移动一个位子//左孩子存在右孩子,则从右孩子的左孩子一直走,到叶子节点停止,因为是叶子节点//就不需要移动元素了int del_node_index = 2*i;if (2*del_node_index + 1 >= *last_index){//左孩子只存在左子树sorted_bitree[i] = sorted_bitree[del_node_index];while (del_node_index*2 <= *last_index){//后面的位置都往上移动sorted_bitree[del_node_index] = sorted_bitree[2*del_node_index];del_node_index *= 2;}sorted_bitree[del_node_index] = -1;printf("last_index:%d\n", *last_index);}else{//移动到左孩子的右孩子del_node_index = del_node_index*2 + 1;while (2*del_node_index <= *last_index){del_node_index *= 2;}//因为叶子节点,所以不需要移动printf("r:%d rp:%d\n", sorted_bitree[i], sorted_bitree[del_node_index]);sorted_bitree[0] = sorted_bitree[del_node_index];sorted_bitree[del_node_index] = -1;}}[2002]对以二叉链表存储的非空二叉树,从右向左依次释放所有叶子结点,释放的同时,把结点值存放到一个向量中。

二叉树的遍历题目及答案

二叉树的遍历题目及答案

二叉树的遍历题目及答案1. 二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。

因而二叉树的遍历次序有六种。

最常用的是三种:前序法(即按N L R次序),后序法(即按L R N 次序)和中序法(也称对称序法,即按L N R次序)。

这三种方法相互之间有关联。

若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是 F E G H D C B 。

解:法1:先由已知条件画图,再后序遍历得到结果;法2:不画图也能快速得出后序序列,只要找到根的位置特征。

由前序先确定root,由中序先确定左子树。

例如,前序遍历BEFCGDH中,根结点在最前面,是B;则后序遍历中B一定在最后面。

法3:递归计算。

如B在前序序列中第一,中序中在中间(可知左右子树上有哪些元素),则在后序中必为最后。

如法对B的左右子树同样处理,则问题得解。

2.给定二叉树的两种遍历序列,分别是:前序遍历序列:D,A,C,E,B,H,F,G,I;中序遍历序列:D,C,B,E,H,A,G,I,F,试画出二叉树B,并简述由任意二叉树B的前序遍历序列和中序遍历序列求二叉树B的思想方法。

解:方法是:由前序先确定root,由中序可确定root的左、右子树。

然后由其左子树的元素集合和右子树的集合对应前序遍历序列中的元素集合,可继续确定root的左右孩子。

将他们分别作为新的root,不断递归,则所有元素都将被唯一确定,问题得解。

3、当一棵二叉树的前序序列和中序序列分别是HGEDBFCA和EGBDHFAC时,其后序序列必是A. BDEAGFHCB. EBDGACFHC. HGFEDCBAD. HFGDEABC答案:B4. 已知一棵二叉树的前序遍历为ABDECF,中序遍历为DBEAFC,则对该树进行后序遍历得到的序列为______。

A.DEBAFCB.DEFBCAC.DEBCFAD.DEBFCA[解析] 由二叉树前序遍历序列和中序遍历序列可以唯一确定一棵二叉树。

二叉树算法题

二叉树算法题

二叉树算法题
题目一:二叉树的深度
给定一个二叉树,找出其最大深度。

示例:
输入:
# 定义二叉树节点
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# 创建二叉树
root = TreeNode(3)
root.left = TreeNode(9)
root.right = TreeNode(20)
root.right.left = TreeNode(15)
root.right.right = TreeNode(7)
输出:
4
解释:二叉树的深度为4,分别是 [3], [9, 20], [15, 7] 和 []。

提示:递归深度优先搜索 (DFS) 是一个有效的解决方案。

对于每个节点,我们可以递归地计算其左子树和右子树的深度,然后返回最大的深度。

为了避免重复计算,我们可以使用一个队列来存储已访问的节点。

在计算深度的过程中,我们需要跟踪当前的深度。

当我们到达一个节点的深度时,我们就可以从队列中删除它,因为我们不需要再次计算它。

为了避免进入无限循环,我们需要在算法中使用一个变量来记录访问过的节点数量,如果超过了树中的节点数量,我们可以提前返回结果。

计算机专业基础综合数据结构树和二叉树历年真题试卷汇编10_真题(含答案与解析)-交互

计算机专业基础综合数据结构树和二叉树历年真题试卷汇编10_真题(含答案与解析)-交互

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编10(总分68, 做题时间90分钟)1. 单项选择题1.先序序列为a,b,c,d的不同二叉树的个数是( )。

【2015年全国试题2(2分)】SSS_SINGLE_SELA 13B 14C 15D 16分值: 2答案:C解析:先序序列为1,2,3,…,n的不同的二叉树的数目是1/(n+1)((2n)!/(n!*n!))。

2.下列选项给出的是从根分别到达两个叶结点路径上的权值序列,能属于同一棵哈夫曼树的是( )。

【201 5年全国试题3(2分)】SSS_SINGLE_SELA 24,10,5和24,10,7B 24,10,5和24,12,7C 24,10,10和24,14,11D 24,10,5和24,14,6分值: 2答案:D解析:A的错误在于若路径上有两个10,叶子5应和另一个权值5组成左右子女,7和3组成左右子女,显然不符合哈夫曼的构造规则(应该3和5组成左右子女构造双亲结点);若路径上只有一个10,5和7并非其左右子女。

B的错误在于双亲10和双亲12不可能构造双亲24。

C的错误是路径上不可能有相同权值10的结点。

D是正确的,双亲10的另一个子女是5,双亲14的另一个子女是8,而双亲10和双亲14恰是双亲24的左右子女。

3.树是一种逻辑关系,表示数据元素之间存在的关系为( )。

【北京交通大学2007(2分)】SSS_SINGLE_SELA 集合关系B 一对一关系C 一对多关系D 多对多关系分值: 2答案:C4.下列判断,( )是正确的。

【华南理工大学2005一、1(2分)】SSS_SINGLE_SELA 二叉树就是度为2的树B 二叉树中不存在度大于2的结点C 二叉树是有序树D 二叉树的每个结点的度都为2分值: 2答案:B解析:二叉树与树是两个不同的概念。

相同点是二者都是树形结构,不同点有三:一是二叉树的度至多是2,树无此限制;二是二叉树的子树有左右子树之分,只有一棵子树时,也必须区分是左子树还是右子树,树不必这样;三是二叉树允许为空,树不准为空,但是多数教科书认为树可以为空,否则空二叉树无法转换成空树,本题第一问有二义性。

东北大学计算机专业基础(含C语言程序设计、数据结构)1996—2019(缺2005、2012)年

东北大学计算机专业基础(含C语言程序设计、数据结构)1996—2019(缺2005、2012)年

东北大学 97 考研题
一、(25 分)按要求完成下题 1 知 U=‘xyxyxyxxyxy’;t=‘xxy‘; ASSIGN(S,U); ASSIGN(V,SUBSTR(S,INDEX(s,t),LEN(T)+1)); ASSIGN(m,‘ww’) 求 REPLACE(S,V,m)= 2 知广义表 A=(((a)),(b),c,(a),(((d,e))))
东北大学 96 考研题
一、(25 分)每小题 5 分 1. 根据下图完成:
1) 画出该图的十字链表存储结构图。 2) 写出其拓扑排序的输出序列。 3) 写出图的强连通分量(支)。 4) 写出到的所有路径及简单路径。 2.给定 8 个权值集合(2,5,3,10,4,7,9,18)画出含有 8 个叶子结点的最佳三叉 归并树,并计算出 3.知含有 8 个结点的一棵二叉树,按先序、中序、后序进行遍历后,有些结点序号不清 楚如下图示。要求构造出一棵符合条件的二叉树。
四、1与L2分别为两单链表头结点,地址指针,且两表中数据结与L2中数据相同的连续结点顺序完全倒置的算法。例:
(15分)
五、知输入关键字序列为(100,90,120,60,78,35,42,31,15)
址区向为0~11。设计一个哈希表函数把上述关键字散到0~11中画出散列表(冲突
用线性探测法);写出查找算法,计算在等概率情况下查找长度。
(15分)
六、一棵高度K具有n个结点的二叉树,按顺序方式存贮:
1)编写用先根遍历树中每个结点的递归算法;
2)编写将树中最大序号叶子结点的祖先结点全部打印输出的算法。
(20分)。
东北大学 98 考研题
一.完成下列各小题(每小题 10 分,共计 30 分)。 1)知三个字符分别为 s=’ab…abcaabcbca…a’ s’=’caab’, s’’=’bcb’ 利用所学字符串基本运算的函数得到结果串为 s’’’=’caabcbca…aca…a’ 要求写出得到上结果串 S“‘所用的函数及执行算法。 2)知记录关键字集合为(53,17,19,61,98,75,79。63,49,46)要求散列到地 址区间(100,101,102,103,104,105,106,107,108,109)内,若产生冲突用开 型寻址法的线性探测法解决。要求写出选用的散列函数;形成的散列表;计算出查找成 功时平均查找长度与查找不成功的平均查找长度。(设等概率情况) 2)知一棵 3 阶 B-树如下图所示: 1)画出查入(18)的 3 阶 B-树计算读结点/写结点次数。

东北大学历年初试考研真题分享

东北大学历年初试考研真题分享
16
21115
196
3314
186
5、(方向移动,试举例说明之。快速排序中有没有这种现象?
二、(15分)设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:
1、找出最小值结点,且打印该数值;
2、若该数值是奇数,则将其与直接后继结点的值交换;
3、若该数值是偶数,则将其直接后继结点删除;
三、(14分)解答下列问题:
1、(4分)将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树;
2、(10分)假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树b1中,写出计算该表达式值的算法。
四、(21分)解答下列问题:
1、(5分)画出有向图十字链表存储结构中头接点和表结点的结点结构。
5、设有1000个无序的元素,希望用最大的速度挑选出其中前十个最大的元素,在以下的方法中采用哪一种最好?为什么?(3分)
(快速排序,归并排序,堆排序,基数排序,shell排序)
二、(10分)两个正数序列A=a1,a2,a3,…..am和B=b1,b2,b3,…bn已经存入两个单链表中,设计一个算法,判别序列B是否是序列A的子序列。
(1)、构造出散列函数;(3分)
(2)、计算出等概率情况下查找成功的平均查找长度;(3分)
(3)、计算出等概率情况下查找失败的平均查找长度;(3分)
4、判别一下序列是否为堆,若不是,则把他调整为堆。
(1)(100,86,48,73,35,39,42,57,66,21)(4分)
(2)(12,70,33,65,24,56,48,92,86,33)(4分)
(4)在m阶B一树中每个结点上至少┌m/2┐有个关键字最多m有个关键字。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4(总分:74.00,做题时间:90分钟)一、综合题(总题数:35,分数:74.00)1.(1)试找出满足下列条件的二叉树:1)先序序列与后序序列相同2)中序序列与后序序列相同3)先序序列与中序序列相同4)中序序列与层次遍历序列相同(2)已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。

【东北大学1999六(4分)】【东南大学2000一、4(6分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:(1)先序遍历二叉树的顺序是“根一左子树一右子树”,中序遍历“左子树一根一右子树”,后序遍历顺序是“左子树一右子树一根”,根据以上原则,本题解答如下:1)若先序序列与后序序列相同,则或为空树,或为只有根结点的二叉树。

2)若中序序列与后序序列相同,则或为空树,或为任一结点至多只有左子树的二叉树。

3)若先序序列与中序序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。

4)若中序序列与层次遍历序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。

(2)由中序序列DBEAFIHCG和后序序列DEBHIFGCA)解析:2.分别给出满足下列条件的二叉树。

(1)前序和中序遍历结果相同;(2)前序和中序遍历结果不相同而是相反;(3)中序和后序遍历结果相同;(4)前序和后序遍历结果相同。

【四川大学2004】【烟台大学2007四、2(8分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:空二叉树满足题目要求,若二叉树非空,则(1)前序和中序遍历结果相同的二叉树是任一结点无左子女; (2)前序和中序遍历结果不相同而是相反的二叉树是任一结点无右子女; (3)中序和后序遍历结果相同的二叉树是任一结点无右子女; (4)前序和后序遍历结果相同的二叉树是只有根结点。

东北大学智慧树知到“计算机科学与技术”《数据结构Ⅱ》网课测试题答案卷2

东北大学智慧树知到“计算机科学与技术”《数据结构Ⅱ》网课测试题答案卷2

东北大学智慧树知到“计算机科学与技术”《数据结构Ⅱ》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共10题)1.当在二叉排序树中插入一个新结点时,若树中不存在与待插入结点的关键字相同的结点,且新结点的关键字小于根结点的关键字,则新结点将成为A.左子树的叶子结点B.左子树的分支结点C.右子树的叶子结点D.右子树的分支结点2.下列查找算法中,平均查找长度与元素个数n不直接相关的查找方法是()。

A.分块查找B.顺序查找C.二分查找D.散列查找3.已知广义表LS=((a,b,c),(d,e,f)),运算head和tail函数取出元素e的运算是()。

A.head (tail (LS))B.tail (head (LS))C.head (tail (head (tail (LS))))D.head (tail (tail (head (LS))))4.在待排关键字序列基本有序的前提下,效率最高的排序方法是()。

A.直接插入排序B.快速排序C.直接选择排序D.归并排序5.如果将矩阵An×n的每一列看成一个子表,整个矩阵看成是一个广义表L,即L=((a11,a21,…,an1),(a12,a22,…,an2),…,(a1n,a2n,…,ann)),并且可以通过求表头head和求表尾tail的运算求取矩阵中的每一个元素,则求得a21的运算是A.tail (head (tail (L)))B.head (tail (head (L)))C.head (head (tail (L)))D.head (head(head(L)))6.设顺序存储的线性表共有123个元素,按分块查找的要求等分成3块。

若对索引表采用顺序查找来确定块,并在确定的块中进行顺序查找,则在查找概率相等的情况下,分块查找成功时的平均查找长度为()。

A.21B.23C.41D.627.判断两个串大小的基本准则是()。

A.两个串长度的大小B.两个串中首字符的大小C.两个串中大写字母的多少D.对应的第一个不等字符的大小8.若在9阶B-树中插入关键字引起结点分裂,则该结点在插入前含有的关键字个数为A.9B.8C.5D.49.用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印相应的顶点,则输出的顶点序列是()。

大连东软面试 数学题

大连东软面试 数学题

大连东软面试数学题(一)1问题:栈和队列的主要区别答案:栈----------后进先出;队列--------先进先出。

2. 问题:完全二叉树的结构答案:深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。

当初面试人员画了几个树让我辨认谁是完全二叉树。

3. 问题:什么是索引答案:索引依附于基表,建立索引是加快查询的有效手段。

4. 问题:什么是视图答案:视图是关系数据库系统提供给用户以多角度观察数据库中数据的重要机制。

是从一个或多个基表(或视图)导出的表,它与基本表不同,是虚表。

5. 问题:什么是游标答案:游标是系统为用户开设的一个数据缓冲区,存放 SQL语句的执行结果,每个游标区都有一个名字。

用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。

6. 问题:对数据库操作的语句答案:select,insert,update,delete7. 问题:数据库的操作过程答案:(1)加载驱动程序;(2)建立数据库连接;(3)向数据库发送SQL 语句;(4)事务处理;(5)管理连接。

8. 问题:所知道的排序方法的种类答案:插入,快速,选择,交换,归并,基数,希尔等。

9.问题:什么是MVC答案:“MVC 是 Model-View -Controller 的简写。

“Model” 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现),“View” 是应用的表示面(JSP 页面),"Controller"是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

这些组件可以进行交互和重用。

”。

二叉树的常考算法题目

二叉树的常考算法题目

二叉树的常考算法题目
二叉树是计算机科学中常见的数据结构,以下是几个常见的二叉树相关算法题目:
1. 二叉树的深度:给定一个二叉树,求其深度。

2. 判断二叉树是否为完全二叉树:给定一个二叉树,判断它是否是完全二叉树。

3. 查找二叉树中的最大值和最小值:给定一个二叉树,找到其中的最大值和最小值。

4. 二叉树的镜像:给定一个二叉树,将其镜像(即左右节点交换)。

5. 反转二叉树:给定一个二叉树,将其反转。

6. 二叉树的左视图:给定一个二叉树,找到其左视图。

7. 二叉树的右视图:给定一个二叉树,找到其右视图。

8. 查找二叉树中的前驱节点和后继节点:给定一个二叉树和一个节点,找到该节点的前驱节点和后继节点。

9. 二叉树的层序遍历:给定一个二叉树,使用层序遍历的方式访问其节点。

10. 二叉树的先序遍历、中序遍历和后序遍历:给定一个二叉树,分别使用先序遍历、中序遍历和后序遍历的方式访问其节点。

这些题目是常见的二叉树算法题目,对于掌握二叉树相关算法非常重要。

计算机面试题目及答案

计算机面试题目及答案

计算机面试题目及答案1. 题目:什么是二叉树,它有哪些性质?答案:二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。

二叉树的性质包括:- 每个节点最多有两个子节点。

- 左子节点的值小于或等于其父节点的值。

- 右子节点的值大于或等于其父节点的值。

- 没有键值相等的节点。

- 任意节点的左子树和右子树也是二叉树。

2. 题目:解释什么是死锁,并描述死锁产生的四个必要条件。

答案:死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种僵局,当进程处于这种僵局状态时,若无外力作用,它们都将无法向前推进。

死锁产生的四个必要条件包括: - 互斥条件:资源不能被多个进程同时使用。

- 请求和保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

- 不剥夺条件:进程已获得的资源在未使用完之前,不能被其他进程强行剥夺。

- 循环等待条件:存在一个进程序列,使得每个进程都在等待下一个进程所占有的资源。

3. 题目:什么是数据库事务的ACID属性?答案:数据库事务的ACID属性是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

- 原子性:事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。

- 一致性:事务必须使数据库从一个一致性状态转换到另一个一致性状态。

- 隔离性:事务的执行不会被其他事务干扰。

- 持久性:一旦事务提交,则其所做的修改将会永远保存在数据库中。

4. 题目:解释什么是TCP/IP协议栈。

答案:TCP/IP协议栈是一组用于数据通信的网络通信协议,它规定了电子设备如何在网络上进行数据交换。

TCP/IP协议栈分为四个层次:- 应用层:负责处理特定的应用程序细节,如HTTP、FTP等。

- 传输层:负责提供端到端的数据传输服务,主要协议有TCP和UDP。

- 网络层:负责将数据包从源传输到目的地,主要协议是IP协议。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编7

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编7

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编7(总分:60.00,做题时间:90分钟)一、综合题(总题数:30,分数:60.00)1.若某非空二叉树采用顺序存储结构,结点的数据信息依次存放于一个一维数组中(假设数组的第一个元素的下标为1),下标分别为i和j的两个结点处在树中同一层的条件是__________。

(i≠j≠1)【北京航空航天大学2006一、6(1分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:[logi]=[logj]。

编号为i的结点的高度是[logi]+1。

)解析:2.给定K(K≥1),对一棵含有Ⅳ个结点的K叉树(N>0),请讨论其可能的最大高度和最小高度。

【大连海事大学2001五(8分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:N个结点的K叉树,最大高度N(只有一个叶结点的任意K叉树)。

设最小高度为H,第i(1≤i≤H)层的结点数为F k+1,则(K I+1 +1)/(K-1) H一1)/(K-1),由此得H=[log k(N(K-1))]+1。

) 解析:3.已知一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有多少个?【东北大学1999一、1(3分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:结点个数在20到40的满二叉树且结点数是素数的数是31,该二叉树的叶子数是16。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9(总分:60.00,做题时间:90分钟)一、设计题(总题数:30,分数:60.00)1.在一棵以二叉链表表示的二叉树上,试写出用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目的算法。

【同济大学2000三、2(12分)】【山东大学1993二(12分)】【上海交大1999三(12分)】【天津大学2005七(10分)】【北京理工200l九(8分)2006七、1(15/2分)】【南京航空航天大学2004二、3(12分)】(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:层次遍历二叉树,需要使用队列。

在遍历中统计度为1的结点的个数。

核心语句段如下:QueueInit(Q);QueueIn(Q,bt);//Q是以二叉树结点指针为元素的队列while(!QueueEmpty(Q)) {p=Queueout(Q); cout<data;//出队,访问结点 if(p一>ichild&&!P一>rchild||!p->ichild&&P 一>rchild)num++;//度为1的结点if(p一>ichild)QueueIn(Q,p->Ichild);//非空左子女入队if(p 一>rchild)QueueIn(Q,p->rchild);//非空右子女入队 })解析:2.设一棵二叉树以二叉链表为存储结构,结点结构为(1child,data,rchild),设计一个算法将二叉树中所有结点的左、右子树相互交换。

【福州大学1998四、2(10分)】(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:采用后序遍历和前序遍历都可以。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4(总分:74.00,做题时间:90分钟)一、综合题(总题数:35,分数:74.00)1.(1)试找出满足下列条件的二叉树:1)先序序列与后序序列相同2)中序序列与后序序列相同3)先序序列与中序序列相同4)中序序列与层次遍历序列相同(2)已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。

【东北大学1999六(4分)】【东南大学2000一、4(6分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:(1)先序遍历二叉树的顺序是“根一左子树一右子树”,中序遍历“左子树一根一右子树”,后序遍历顺序是“左子树一右子树一根”,根据以上原则,本题解答如下:1)若先序序列与后序序列相同,则或为空树,或为只有根结点的二叉树。

2)若中序序列与后序序列相同,则或为空树,或为任一结点至多只有左子树的二叉树。

3)若先序序列与中序序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。

4)若中序序列与层次遍历序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。

(2)由中序序列DBEAFIHCG和后序序列DEBHIFGCA)解析:2.分别给出满足下列条件的二叉树。

(1)前序和中序遍历结果相同;(2)前序和中序遍历结果不相同而是相反;(3)中序和后序遍历结果相同;(4)前序和后序遍历结果相同。

【四川大学2004】【烟台大学2007四、2(8分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:空二叉树满足题目要求,若二叉树非空,则(1)前序和中序遍历结果相同的二叉树是任一结点无左子女; (2)前序和中序遍历结果不相同而是相反的二叉树是任一结点无右子女; (3)中序和后序遍历结果相同的二叉树是任一结点无右子女; (4)前序和后序遍历结果相同的二叉树是只有根结点。

东软数据结构-树和二叉树复习题

东软数据结构-树和二叉树复习题

B ACEDFNPGH JM OLIK树和二叉树:纸质作业一、已知二叉树T逻辑结构如下图所示,请分别用顺序存储和二叉链表存储法表示此树。

二、将下面的森林F=﹛T1,T2,T3﹜转换为对应的二叉树,并写出相应二叉树的先根遍历序列。

三、将下列由三棵树组成的森林转换为二叉树,并写出相应二叉树的中根遍历序列四、已知树T的孩子链表存储结构如图所示,试画出此树逻辑结构,以及此树转换成的二叉树逻辑结构,并写出二叉树的后根遍历序列五、设一棵二叉树的先序序列为:A B D F C E G H 中序遍历序列为: B F D A G E H C (1)画出这棵二叉树。

(2)将这棵二叉树转换成对应的树(或森林)。

六、给定集合{15,3,14,2,6,9,16,17}(1)构造相应的huffman树(规定:二叉树中两个结点,权值小的结点居左)(2)计算它的带权路径长度(3)写出它的huffman编码:(规定:左子树编码为0,右子树编码为1,左小右大)七、假设通信电文使用的字符集为{a,b,c,d,e,f},各字符在电文中出现的频度分别为:0.34,0.05,0.12,0.23,0.08,0.18,试为这6个字符设计哈夫曼编码。

请先画出你所构造的哈夫曼树(要求树中左孩子节点的权值小于右孩子节点的权值,左分支表示字符“0”,右分支表示字符“1”),然后分别写出每个字符对应的编码。

八、假定教室中有A、B、C、D、E五个设备,需编写一套指令集对五个设备进行自动开关控制,五个设备一天中的使用次数分别是7,5,2,4,9次。

为使得指令集长度最短,请对五个设备进行编码,要求画出哈夫曼树,并写出五个设备所对应的哈夫曼编码。

九、假定用于通讯的电文仅有8个字母C1,C2,…,C8组成,各个字母在电文中出现的频率分别为5,25,3,6,10,11,36,4,试为这8个字母设计哈夫曼编码树,并写出8个字符的哈夫曼编码十、A,B,C,D,E的权值为{3, 2, 4, 5, 1},用此权值构造哈夫曼(Huffman)树,并求此哈夫曼(Huffman)树和各个字符的哈夫曼编码(左分支为0,右分支为1)一、初始关键字序列如下:{49,38, 65,97,76,13,27,49,55 04},请写出它们的希尔排序的全过程(其中d=5,3,1)二、给定的关键字序列21,22,27,78,40,05,47,69,12,99,要按升序排序,请写出采用冒泡排序法前3趟的结果,和用堆排序法选择出最大和次大关键字的结果(图)三、已知某文件的记录关键字集为{50,10,75,40,45,85,80},写出快速排序方法进行排序的前2次划分的结果四、已知某文件的记录关键字集为{50,10,30,40,45,85,80},要从小到大进行排序,请分别写出直接插入排序的前2趟结果和直接选择排序的前3趟结果。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编9(总分:60.00,做题时间:90分钟)一、设计题(总题数:30,分数:60.00)1.在一棵以二叉链表表示的二叉树上,试写出用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目的算法。

【同济大学2000三、2(12分)】【山东大学1993二(12分)】【上海交大1999三(12分)】【天津大学2005七(10分)】【北京理工200l九(8分)2006七、1(15/2分)】【南京航空航天大学2004二、3(12分)】(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:层次遍历二叉树,需要使用队列。

在遍历中统计度为1的结点的个数。

核心语句段如下:QueueInit(Q);QueueIn(Q,bt);//Q是以二叉树结点指针为元素的队列while(!QueueEmpty(Q)) {p=Queueout(Q); cout<data;//出队,访问结点 if(p一>ichild&&!P一>rchild||!p->ichild&&P 一>rchild)num++;//度为1的结点if(p一>ichild)QueueIn(Q,p->Ichild);//非空左子女入队if(p 一>rchild)QueueIn(Q,p->rchild);//非空右子女入队 })解析:2.设一棵二叉树以二叉链表为存储结构,结点结构为(1child,data,rchild),设计一个算法将二叉树中所有结点的左、右子树相互交换。

【福州大学1998四、2(10分)】(分数:2.00)__________________________________________________________________________________________正确答案:(正确答案:采用后序遍历和前序遍历都可以。

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编3

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编3

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编3(总分:84.00,做题时间:90分钟)一、单项选择题(总题数:26,分数:52.00)1.树是一种逻辑关系,表示数据元素之间存在的关系为____。

【北京交通大学2007年】(分数:2.00)A.集合关系B.一对一关系C.一对多关系√D.多对多关系解析:解析:考查树的概念。

树是一种特殊的数据结构,表示元素之间的一对多的关系,例如:一个父结点可能有多个儿子结点,而一个儿子结点一定只有一个父结点。

2.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为____个。

【哈尔滨:[业大学2001年】(分数:2.00)A.4B.5C.6 √D.7解析:解析:考查树结点数与度的相关计算。

树中结点数等于所有结点度数和加1。

所以,2十1+2+X=2.3+1.2十2.1+x.0+1,解得X=6。

3.设有一表示算术表达式的二叉树(见图3-1),它所表示的算术表达式是____1999年】(分数:2.00)A.A+B+C/(D*E)+(F—G)B.(A*B+C)/(D*E)+(F—G)C.(A+B+C)/(D*E+(F—G)) √D.A*B+C/D*E+F—G解析:解析:考查二又树表示算术表达式的方法。

叶子结点表示运算值,非叶子结点表示运算符,运算符的子结点或子树即该运算符的运算值。

4.在下述结论中,正确的是____。

【南京理工大学1999年】①只有一个结点的二叉树的度为0:②二叉树的度为2;③二叉树的左右子树可任意交换:④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

(分数:2.00)A.①②③B.②③④C.②④D.①④√解析:解析:考查二叉树的相关概念。

二叉树的度最多为2,可以比2小。

二叉树的左有了树是有顺序的,不可随意交换。

完全二叉树从最底层右边起比层数相同的满二叉树连续缺失若干个叶结点。

5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是____。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[1996] 设t 为一棵二叉树的根结点地址指针,试设计一个非递归算法完成把二叉树中每个结点的左右孩子位置交换。

int swithLRChild(BiTree *t){ BiTree *stack[100] = {0};int stack_length = 0;if (NULL == t){return 0;}stack[stack_length++] = t;while (stack_length > 0){//pop stackBiTree *node = stack[stack_length - 1];stack_length -= 1;BiTree *temp = node ->lchild;node->lchild = node ->rchild; node->rchild = temp;if (NULL != node ->rchild){ stack[stack_length++] = node ->rchild;}if (NULL != node ->lchild){stack[stack_length++] = node ->lchild;}}return 1;}[1998]一棵高度为K 且有n个结点的二叉排序树,同时又是一棵完全二叉树存于向量t 中,试设计删除树中序号为i 且具有左右孩子的一个结点,而不使存储量增加保证仍为二叉排序树(不一定是完全二叉树)的算法。

//存数据的位置是从 1 的索引开始的,避免需要访问索引为0 的空间,避免需要频繁的索引转换void delNodeInSortedBiTree(int *sorted_bitree, int *last_index,int i){//因为题目中描述具有左右孩子,所以直接从左孩子的最右边叶子节点开始//分两种情况,左孩子没有右孩子,那么左孩子之后的节点都移动一个位子//左孩子存在右孩子,则从右孩子的左孩子一直走,到叶子节点停止,因为是叶子节点//就不需要移动元素了int del_node_index = 2*i;if (2*del_node_index + 1 >= *last_index)//左孩子只存在左子树sorted_bitree[i] = sorted_bitree[del_node_index];while (del_node_index*2 <= *last_index){//后面的位置都往上移动sorted_bitree[del_node_index] = sorted_bitree[2*del_node_index]; del_node_index *=2;}sorted_bitree[del_node_index] = -1;printf("last_index:%d\n", *last_index);}else{//移动到左孩子的右孩子del_node_index = del_node_index*2 + 1;while (2*del_node_index <= *last_index){del_node_index *= 2;}//因为叶子节点,所以不需要移动printf("r:%d rp:%d\n", sorted_bitree[i], sorted_bitree[del_node_index]); sorted_bitree[0] =sorted_bitree[del_node_index]; sorted_bitree[del_node_index] = -1;}}[2002] 对以二叉链表存储的非空二叉树,从右向左依次释放所有叶子结点,释放的同时,把结点值存放到一个向量中。

要求:( 1)用文字写出实现上述过程的基本思想. (2)写出算法*/keyType XL[MAX];Int iTmp=0;void Ani_PreTravel(BiTree &T){if(T){if((T ->lchild == NULL) && (T ->rchild == NULL)){XL[iTmp++] == T ->data;free(T);T = NULL;}else{Ani_PreTravel(T ->rchild);Ani_PreTravel(T ->lchild);}}}[2002] 设二叉排序树已经以二叉链表的形式存储在内存中,使用递归方法,求各结点的平衡因子并输出。

要求:(1) 用文字写出实现上述过程的基本思想。

(2) 写出算法*/(1)分别求出左子树与右子树的深度,二者之差即为该结点的平衡因子。

(2)//递归求二叉树的深度int Depth(_PNode pNode){if (NULL != pNode){int ld = Depth(pNode ->left);int rd = Depth(pNode ->right);return ld > rd ? ld + 1: rd + 1;}return 0;}//递归求二叉树每个结点的平衡因子void Balance(_PNode pNode){if (NULL != pNode){Balance(pNode ->left);Balance(pNode ->right);int hl = Depth(pNode ->left);int hr = Depth(pNode ->right);pNode->bf = hl - hr;print(pNode ->bf);// 输出各节点的平衡因子}}[2003] 三、给出中序线索二叉树的结点结构,试编写在不使用栈和递归的情况下先序编历中序线索二叉树的算法。

*/ 不懂!!!!!!!!!!!!!!void InTraveseThr(BitTree thrt){// 遍历中序线索二叉树p = thrt ->lchild; //p 指二叉树根结点while (p!=thrt){while(p ->Ltag == 0)p = p->lchild;printf(p ->data);while(p ->rtag == 1 && p ->rchild != thrt){p = p->rchild; printf(p ->data);}//whilep = p->rchild;}//while}//InTraversethr[2005] 设二叉树中结点的数据域的值互不相同,试设计一个算法将数据域值为X 的结点的所有祖先结点的数据域打印出来。

// 算法采用前序遍历的递归算法,在典型的遍历算法的参数表中增加了x,path[] ,level。

X代表要找的值;path[] 记录从根到含有x 节点的路径上所有的祖先节点,容量为maxsize,已经由#define 声明;level 传递当前访问节点的层次,初始值为1,用n 来记录祖先节点的个数int findAncestors(BTNode *t,char x,char path[],int level,int &n){ if(t!=NULL){path[level -1]=t ->data;if(t ->data==x){n=level;return 1;}if(findAncestors(t ->lchild,x,path,level+1,n)){return 1;}return findAncestors(t ->rchild,x,path,level+1,n);}else{return 0;}}[2006] 设二叉树二叉链表为存储结构,编写计算二叉树tree 中所有节点的平衡因子,同时返回二叉树tree 中非叶结点个数的算法与2002 年一样,只是加上非叶结点个数。

[2007] 设有n 个结点的平衡二叉树的每个结点都标明了平衡因子b, 设计结点存储结构,并编写求平衡二叉树的高度的算法//结点存储结构为typedef struct BTNode{int data;// 顶点信息int bf;// 顶点的平衡因子struct BTNode *lchild;struct BTNode *rchild;};int BalanceDepth(BTNode *bt){int level=0;// 代表节点层数BTNode *p;p=bt;while(p){level+=1;if(p->bf>0){// 如果当前结点的平衡因子是正数,则说明左子树高p=p->lchild;}else{// 如果为负数,说明右子树高,如果为零,则左右子树一样高p=p->rchild;}}return level;// 返回该平衡二叉树的高度}[2009] 设某二叉树以二叉链表为存储结构,设计算法将二叉树中各结点的左右孩子位置互换。

*/方法一:可以用二叉树后序递归遍历框架来解此题,即对当前树的左子树进行交换,再对右子树进行交换,最后交换整棵树(从底部到上面)void swap(BTNode *bt){if(b!=NULL){swap(b->lchild);swap(b->rchild);BTNode *temp=b->lchild;b->lchild=b->rchild;b->rchild=temp;}}方法二:先序遍历//这种通过返回树的方式,比较简便,可以借鉴BTree *Exchange(BTree *p)// 将p 指针指向的二叉树的左右子树进行互换。

{BTree *r;// 定义一个指针,用来交换左右子树if(p != NULL)// 交换p 结点的左右孩子{k++;r= p->lc;p->lc = p->rc;p->rc = r;p->lc = Exchange(p->lc);p->rc = Exchange(p->rc);}return(p);}//这种方式,如果指针需要变化,需要在开始用BTree *s=p; 指向树的指针需要进行替换,或者用引用型void Exchange(BTree *s)// 将s 指针指向的二叉树的左右子树进行互换。

{BTree *r;if(s != NULL)// 交换p结点的左右孩子{r= s->lc;s->lc = s->rc;s->rc = r;Exchange(s->lc);Exchange(s->rc);}}[2009] 已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。

相关文档
最新文档