习题整理1.4、5

这篇博客主要探讨了二叉树的性质,解析了一棵有67个结点的二叉树中度为2的结点数量,以及无向图在邻接表中的节点数量。还涉及到了Java中的final关键字使用、Integer对象的特性,以及数据结构中的堆、最小生成树、容器集合类和引用类型等相关知识。

1.一棵二叉树有67个结点,这些结点的度要么是0,要么是2。这棵二叉树中度为2的结点有______________个
在这里插入图片描述
解析:67个结点要么度是0(m) 要么度是2(n) 则有 m=n+1
m+n=67 2n+1=67 n=33 m=34
所以度为0的有34个
度为2的有33个

4.有e条边的无向图,在邻接表中有e个结点。
在这里插入图片描述
解析:顶点类的节点有e个,图中有n个边,则边类的节点有2n个,因此为2n+e
6.对于一个具有 n 个顶点的无向图,若采用邻接表表示,则表头向量的大小为_____。
在这里插入图片描述
解析:邻接表顶点数就是图的定点数.一个顶点就是一个表头,共有n个顶点,则共有n个表头,即表头向量大小为n
7.设一棵m叉树中有N1个度数为1的结点,N2个度数为2的结点,……,Nm个度数为m的结点,则该树中共有()个叶子结点。
在这里插入图片描述
解析:*假设叶子结点数为n0,并假设树的结点数为N,N = n0+n1+n2+…+nm
N = n1+2n2+3n3+…+mnm+1
这样得到n0+n1+n2+…+nm = 1+n1+2
n2+3n3+…+mnm
即得:n0 = n2+2n3+3n4+…+(m-1)nm+1

8.关于Java语言中的final关键字的使用,下列说法正确的是()
在这里插入图片描述
解析:final 定义的变量,可以在不是必须要在定义的同时完成初始化,也可以在构造方法中完成初始化。
9.以下程序段的输出结果为:
在这里插入图片描述
解析:使用Integer a = 1;或Integer a = Integer.valueOf(1); 在值介于-128至127直接时,作为基本类型。
使用Integer a = new Integer(1); 时,无论值是多少,都作为对象。

11.最小代价生成树是唯一的。
在这里插入图片描述
解析:代价唯一,树不一定唯一,除非权值均不等
最小生成代价树唯一

12.已知序列25, 13, 10, 12, 9 是大根堆,在序列尾部插入新元素 18,将其再调整为大根堆,调整过程中元素之间进行的比较次数是( )。
在这里插入图片描述
解析:不要忘了18与25还得比较一次
15.下面的哪个序列可能是二叉搜索树中序遍历的结果?
在这里插入图片描述
解析:二叉搜索树一个很重要的特性就是:树中任何结点的左子树中所有结点的值均比该结点小,右子树中所有结点的值均比该结点大。对二叉搜索树进行中序遍历即得到一个递增排序的序列。
二叉搜索树中序遍历的结果一定是从小到大的有序序列

18.下列关于容器集合类的说法正确的是?
在这里插入图片描述
解析:a选项linkedlist类是实现了List接口,而不是继承
b选项AbstractSet类实现Set接口
c选项HashSet继承 AbstractSet类,同时也实现set
d选项WeakMap是js里面的
WeakMap是js中的,java的是WeakHashMap

20.下面有关值类型和引用类型描述正确的是()?
在这里插入图片描述
解析:引用类型的变量也在栈区,只是其引用的对象在堆区
8.在C语言中,若有定义:int a[ 4 ] [ 1 0 ] (其中0<=i<4,0<=j<10);则下列选项中对数组元素a[ i ] [ j ] 引用错误的是()
在这里插入图片描述
解析:A是a [ i ] [ j ] 的地址
D是A再取 * 则是a [ i ] [ j ] 的值
C正确,a [ i ] 为第i行第0个元素的值,加j后为 a [ i ] [ j ] 地址,再取*就是a[i][j]
B正确,a [ 0 ] [ 0 ] 取地址是数组第一个元素的地址,加上10 * i为第i行第0个元素的地址,在加j是a [ i ] [ j ] 地址,再取 * 是a [ i ] [ j ] 的值

10.已知int a [ 3 ] [ 4 ] ;则下列能表示a [ 1 ] [ 2 ] 元素值的是()
在这里插入图片描述
解析:**这是一个三行四列的数组
(a+1)表示第二行的首地址,和a[1]一样。
(a+1)+2第二行第三个数字的地址
(a+1)+2)就是第二行第三个数字的值

11.任何一个带权的无向连通图的最小生成树()
在这里插入图片描述
解析:树是e=v-1边数最少的无向连通图,故必有树(至少一棵)。
也可以有多棵最小生成树,例如图(i-j k :点i到j间有边且权为k):
1-2 1
2-3 1
1-3 1
选边1-2,2-3是边权和为2的最小生成树;
选边1-3,2-3也是边权和为2的最小生成树。

16.对于序列( 12 , 13 , 11 , 18 , 60 , 15 , 7 , 19 , 25 , 100 ),用筛选法建堆,必须从值为 ________ 的数据开始建初始堆
在这里插入图片描述
解析:有n个元素的序列,若使用筛选法建堆,则从位置为n/2取下整的元素开始建堆
17.当编译并运行下面程序时会发生什么结果()
在这里插入图片描述
解析:首先继承Thread,然后调用run方法,bgroud并没有重写run方法,那么就是调用父类Thread的run方法。
然后查看父类代码
@Override
public void run() {
if (target != null) {
target.run();
}
}
private Runnable target;
其中target是Runnable对象
明显target并没有显示初始化。
所以不会有显示。
一般target的初始化是这样的,将runnable对象作为thread参数进行线程的创建
public Thread(Runnable target) {
init(null, target, “Thread-” + nextThreadNum(), 0);
}

18.要导入java/awt/event下面的所有类,叙述正确的是?()
在这里插入图片描述
解析:**java.awt.是导入java\awt包下所有的类,并不包括其子包下的类。
java.awt.event.才能导入java\awt\event包下的类。

在这里插入图片描述
解析:因为子线程的休眠时间太长,因此主线程很有可能在子线程之前结束也就是输出结果是12,但是子线程用了join函数,因此主线程必须等待子线程执行完毕才结束因此输出结果只能是21
21.在Windows中,下列关于堆和栈的说法中错误的是?
在这里插入图片描述
解析:堆是不连续的,生长方向是向上的,即向着内存地址增大的方向增长;栈是连续的,生长方向是向下的,即向着内存地址减小的方向增长。
30.character流和byte流的的说法错误的是
在这里插入图片描述
解析:字符流和字节流每次读入的字节数是不确定的,可能相同也可能不相同;字符流和字节流都有缓冲流
4.下列哪些容器可以使用数组,但不能使用链表来实现?
在这里插入图片描述
解析 :优先队列是带自动排序功能的队列,一般用大根堆(小根堆)来实现,因此可以使用链表来实现。
Map或者Dict是可以按key索引值,这个只有数组能实现,链表不能

7.给字母重新进行二进制编码,以使得"MT-TECH-TEAM"(包含连字符,不包含引号)的长度最小.并能够根据编码,解码回原来的字符串.请问最优编码情况下该字串的长度是多少bit?
在这里插入图片描述
解析:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值