1、若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适
A 前序 B 中序 C 后序 D 按层次
解析:显然后序遍历比较合理。正常的逻辑应该就是:做好当前结点子树内部的交换,然后交换当前结点的左右子树。刚好符合后序遍历的算法逻辑。
1. 交换好左子树
2. 交换好右子树
3. 交换左子树与右子树
其他算法如先序和按层次其逻辑都差不多,即访问当前结点时交换其左右子树。从逻辑上来看稍显别扭一点点。因此说最合适应该是后序遍历,但是从实现上来说先序和按层次都是可以的。
1. 交换左子树与右子树
2. 遍历左子树
3. 遍历右子树
按层次遍历
1. 根结点入队列
2. 出队列,交换其左右子树,将子树的根入队列
3. 重复2直到队列为空
中序遍历相对较难实现一些。
2、链表不具备的特点是( )
A 可随机访问任何一个元素
B 插入、删除操作不需要移动元素
C 无需事先估计存储空间大小
D 所需存储空间与线性表长度成正比
解析:链表是线性表的链式存储,是用结点来存储数据元素。线性表采用链表作为存储结构时,不能进行数据元素的随机访问,其优点是插入和删除操作不需要移动元素。所以,本题应该选择A。
3、下列关于栈的叙述正确的是()
A 栈是非线性结构
B 栈是一种树状结构
C 栈具有先进先出的特征
D 栈有后进先出的特征
解析:栈实际上也是线性表,是按照“先进后出”或“后进先出”的原则组织数据的。
4、某棵完全二叉树上有698个节点,则该二叉树的叶子节点数为
A 349 B 350 C 255 D 351
解析:所谓完全二叉树是指除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有n个结点的完全二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。本题n=698,故父结点数等于int(698/2)=349,叶子结点数等于 698-349=349。
5、输入若已经是排好序的,下列排序算法最快的是()
A 插入排序 B Shell排序 C 合并排序 D 快速排序
解析:A:插入排序只需要遍历一遍,时间复杂度为O(n)
B:希尔排序基于插入排序,只有好的情况下才能达到O(n)
C:归并排序时间复杂度为nlogn
实际上该题接收窗口一直为10KB,可知不管何时,发送窗口一定小于等于10KB,选项中只有A选项满足条件,可直接得出选A。
8、linux 系统中,给文件授予可执行权限的命令是()
A chown B mv C sudo D chmod
解析:chown更改文件的拥有者,mv移动,sudo以管理员权限运行,chmod给文件授予可执行权限。
解析:进程有3个状态:就绪态。执行态、阻塞态。三种状态的转换包含有:
就绪->执行,执行->就绪,执行->阻塞,阻塞->就绪
等待I/O、进程sleep、等待解锁等原因都会导致进程暂停。关于"时间片切换",当进程已经获得了除cpu外所有的资源,这时的状态就是就绪态,当分配到了时间片就成了执行态,当时间片用完之前一直未进入阻塞态的话,此后便继续进入就绪态。所以进程的就绪与阻塞是完全不同的。
原文:https://www.cnblogs.com/zsh-blogs/p/10570311.html