数据结构笔试

1.平衡二叉查找树:
百度百科:
平衡二叉搜索树(英语:Balanced Binary Tree)是一种结构平衡的二叉搜索树,即叶节点
高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。它能在O(
)内完成插入、查找和删除操作,最早被发明的平衡二叉搜索树为AVL树。
常见的平衡二叉搜索树有:

AVL树
红黑树
Treap
节点大小平衡树 [1]

在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两
棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情>况下的时间复杂度都是
。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树>得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis,他们在1962年的论文《An algorithm for the organization of information》中公开了这一数据结构。
节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1>、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重
新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计
算出来。 [1]

https://blog.csdn.net/qq_25940921/article/details/82183093

2.从根开始按层次(第0层->第1层->第2层)遍历一颗二叉树,需要使用什么辅助数据结构?
A. heap
B. queue
C. binary tree
D. stack

分析:

heap:堆(深度优先遍历)
堆总是满足下列性质:
1、堆中某个节点的值总是不大于或不小于其父节点的值;
2、堆总是一棵完全二叉树。

queue:队列(广度优先遍历)
顺序队列先进先出
题目中:将根结点A入队,再将A出队(遍历到A),然后将A的所有子结点(假设为B、C)入队,接着,B出队(遍历到B),将其所有子结点入队,接下来出队的自然是C(遍历到C),然后将C的所有子结点入队,这样,就遍历了两层。接下来出队的自然是B的第一个子结点(遍历到该节点),开始第三层的遍历……可见,我们需要一个先进先出的结构,选择队列。binary tree:二叉树,简称bt。遍历方法:前序遍历、中序遍历、后序遍历N(Node)、L(Left subtree)和R(Right subtree)

NLR:前序遍历(PreorderTraversal)
——根、左、右
② LNR:中序遍历(InorderTraversal)
——左、根、右
③ LRN:后序遍历(PostorderTraversal)
——左、右、根
前序遍历:A B D C E F
中序遍历:D B A E C F
后序遍历:D B E F C A

如果已知两种遍历顺序,求二叉树,其中必须已知中序遍历,因为中序遍历能够递归的推出根节点的左树和右树。如果只有前序遍历、后序遍历是推不出来的。也就是说,只有通
过先序中序或者后序中序才可以确定一个二叉树。
stack:栈(深度优先遍历)
前进后出

https://blog.csdn.net/qq_24885695/article/details/69530648

3.某个大型的网络游戏网站,现有几亿用户,为了实时获取前十名游戏分数最高的玩家,使用>以下哪个排序算法比较合理() ##牛客网上的题。至于为什么选D希望大佬们评论

基数排序

快速排序

二叉排序

堆排序

正确答案:D

4.有A,B,C,D,E五个字符,出现的频率分别为2,5,3,3,4,由A,B,C,D,E生成的最优二叉树中,该树
的带权路径长是多少()

35  110

49  011

39  010

45  101

正确答案:C

5.以下属于Hash碰撞解决方法的是()

线性探测

二次探测

拉链法

二次散列

正确答案:A B C D

常见哈希冲突解决办法:
1.开放地址法 2.线性探测法 3.链地址法(拉链法) 4.二次探测法
5.伪随机探测法 6.再散列(双重散列,多重散列) 7.建立一个公共溢出区
单旋转法是建立散列函数的一种方法, ,将最后一位数,旋转放置到第一位
常见的散列函数有,直接定址法,数字分析法,平法取中法,取余法,折叠法,随机法

6.在一个游戏的任务中,玩家需要进入1个山洞,取得宝石,之后回到入口.
山洞的地图如下:
S--------------------T
S是入口
T处有宝箱,打开宝箱之后可能得到的物品有:
1)宝石,出现概率为5%.
2)魔法券.出现概率为50%.玩家每消耗一个魔法券,可以直接传送到入口S.
3)什么也没有,概率为45%.
S到T的距离为1.
每次玩家回到S之后,宝箱T的状态会重置,再次进入山洞可以重新打开宝箱获得物品.
玩家的任务是到达T获取宝石之后回到入口S.如果到达T之后没有获得宝石,可以走出山洞之>后
再进入反复刷.
问题:玩家完成任务所走路程的数学期望是()

40

25

35

30

##这是百度出来的答案自己参考
理论上,5% * 20=1,所以走了20次,开了20次宝箱,因为有往返过程,所以20*2=40,又因
为在走40趟中,手里有了20 * 50%=10个魔法圈,可以不用用脚回到起点了,可以瞬间转移>到起点 所以40-10=30次

7.用二进制表示十进制数1到4,分别为1、10、11、100,这些二进制数所有位上1的个数共>有5个。那么,用二进制表示的十进制数1到128,所有位上1的个数共有_____________个。

448

449

1024

1025

正确答案:B
##牛客网上别人提供的答案:
128的二进制是10000000(8位),那么对于1到128的数来说,前7位0和1的出现次数是相等>的(这个很好理解,举个简单的例子,对于001到100之间的数是001 010 011 100 ,对于前
两位来说,可以看到0和1的数量是相等的),那么这样就好做了,对于前7位来说,一共128个数,那么就是说1出现的个数就是7*64,对于第八位来说,很明显可以看到只有在128的时
候第八位取到了1,所以说第八位一共就一个1,所以最后的结果就是449

8.快速排序在下面哪种情况下优势最明显()

数据有多个相同数值

数据基本有序

数据基本无序

数据无任何相同数值

正确答案:C

##我觉得是看深度,无序小于有序深度,所以无序在快速排序优势最明显

9.下面哪种数据结构最适合创建一个优先级队列()

堆

双向链表

单向链表

栈

正确答案:A

10.假设MySQL数据库表:

create table T{
k int unsigned not null auto_increment,
a date,
b varchar(24),
c int,d varchar(24),
primary key(k),unique key a_index (a DESC,b DESC),
key k1(b),key k2(c),key k3(d));

如下哪些sql语句查询能较好的利用索引?()

select b from WHERE b like 'aaa%';

select a,b from T WHERE a='2015-10-25' ORDER BY b ASC,c ASC;

select a,b,c from T WHERE a='2015-10-25' ORDER BY b ASC;

select a,b,c from T WHERE a='2015-10-25' ORDER BY a,b;

正确答案:A D

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值