算法的时间复杂度取决于( )。
有n个结点的二又树,已知叶结点个数为n
0
。
(1)写出求度为1的结点的个数的n
1
的计算公式。
(2)若此树是深度为k的完全二叉树,写出n为最小的公式。
(3)若二叉树中仅有度为0和度为2的结点,写出求该二叉树结点个数n的公式。
已知有一整数序列{a
1
,a
2
,a
3
,…,a
n
}。栈A中只保存整数,即序列中元素为整数时允许其入栈。设计一个算法实现如下功能;用栈结构存储入栈的整数,当a
i
≠一1时,将a
i
进栈;当a
i
=-1时,输出栈顶整数并出栈。
最小最大堆(minmaxHeap)是一种特定的堆,其最小层和最大层交替出现,根总是处于最小层。最小最大堆中的任一结点的关键字值总是在以它为根的子树中的所有元素中最小(或最大)。如图所示为一最小最大堆。(1)画出在图中插入关键字为5的结点后的最小最大堆。(2)画出在图中插入关键字为80的结点后的最小最大堆。(3)编写一算法实现最小最大堆的插入功能。假定最小最大堆存放在数组中,关键字为整数。
一棵二叉树如下图所示,其中序遍历序列为()。
分别以下列序列构造二叉排序树,与用其他三个序列所构造的结果不同的是( )。
归并排序中,归并的趟数是( )。
在一棵表示有序集S的二叉搜索树(binary search tree)中,任意一条从根到叶结点的路径将S分为3部分:在该路径左边结点中的元素组成的集合S
1
;在该路径上的结点中的元素组成的集合S
2
::在该路径右边结点中的元素组成的集合S
3
。S=S
1
∪S
2
∪S
3
。若对于任意的a∈S
1
,b∈S
2
,c∈S
3
,是否总有a≤b≤c?为什么?
设计一个算法求图的中心点。设v是有向图G的一个顶点,把v的偏心度定义为: MAx{从ω到v的最短距离|ω属于V(G)} 如果v是有向图G中具有最小偏心度的顶点,则称顶点v是G的中心点。
以下排序方法中,稳定的排序方法是( )。
已知下列各种初始状态(长度为n)元素,试问当利用直接插入法进行排序时,至少需要进行多少次比较(要求排序后的文件按关键字从大到小顺序排列)?
假设K
1
,…,K
n
是n个关键词,试解答:
(1)试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K
1
,K
2
,…,K
n
时,用算法建立一棵以LLINK—RLINK链接表示的二叉查找树。
(2)设计一个算法,打印出该二叉查找树的嵌套括号表示结构。假定该二叉查找树的嵌套括号表示结构为B(A,D(C,E))。
在一棵表示有序集S的二叉搜索树(binary search tree)中,任意一条从根到叶结点的路径将S分为3部分:在该路径左边结点中的元素组成的集合S
1
;在该路径上的结点中的元素组成的集合S
2
;在该路径右边结点中的元素组成的集合S
3
。S=S
1
∪S
2
∪S
3
。若对于任意的a∈S
1
,b∈S
2
,c∈S
3
,是否总有a≤b≤c?为什么?
已知一个带有头结点的单链表L,其结点结构由两部分组成:数据域data,指针域link。设计一个算法,以最高效的方法实现在单链表中删除数据域最小值结点。要求:
在有向图G的拓扑序列中,若顶点v
i
在顶点v
j
之前,则下列情形不可能出现的是( )。
试设计一算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关键字之前,并分析算法的时间复杂度。
写一个建立堆的算法:从空堆开始,依次读入元素,调用上题中堆插入算法将其插入堆中。
关于B-树,下列说法中不正确的是( )。
算术表达式a+b*(c+d/e)转为后缀表达式后为( )。
在图中所示的4棵二叉树中,()不是完全二叉树。