假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中,写出计算该算术表达式值的算法。
假设以I和O分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由I和O组成的序列表示。
设森林F对应的二叉树为B,它有m个结点,B的根为P,P的右子树结点个数为n,森林F中第一棵树的结点个数是( )。
已知一个二叉树,用二叉链表形式存储,给出此二叉树建立过程算法(可不描述结构体)。
二叉查找树的查找效率,在( )时其查找效率最低。
带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中( )。
线性表(a
1
,a
2
,a
3
,…,a
n
)中元素递增有序且按顺序存储于计算机内。要求设计算法完成以下内容:
(1)用最少的时间在表中查找数值为x的元素。
(2)若找到将其与后继元素位置相交换。
(3)若找不到将其插入表中并使表中元素仍递增有序。
证明:对有向图的顶点适当地编号,可使其邻接矩阵为下三角形且主对角线为全0的充要条件是该图为无环图。
下面函数的功能是实现分块查找,空白处应该添加的内容是( )。
int BlkSearch(int*nz,int key,int block,int BLK,int len)
{
int i;
block=block—1:
if(lenlen)BLK=len;
for(i=block*BLK;i<(block+1)*BLK&&nz[i]!=0;i++)
{
if(______)
{
printf(”找到第%d个数是%d\n”,i,key);
return 0;
}
}
printf(”\n”):
printf(”查找结束\n”);
return 0;
}
已知一棵二叉树,共有n个结点,那么此二叉树的高度为( )。
已知一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有( )个。
无向图G有23条边,度为4的顶点有5个,度为3的顶点有4个,其余都是度为2的顶点,则图G最多有( )个顶点。
设有5个元素a,b,c,d,e顺序进栈,下列几个选项中,不可能的出栈序列是( )。
在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为( )。
“破圈法”是“任取一圈,去掉圈上权最大的边”,反复执行这一步骤,直到没有圈为止。请给出用“破圈法”求解给定的带权连通无向图的一棵最小代价生成树的详细算法,并用程序实现你所给出的算法。(注意:圈就是回路)
在单链表中,每个结点含有5个正整型的数据元素(若最后一个结点的数据元素不满5个,以值0充),试编写一算法查找值为n(n>0)的数据元素所在的结点指针以及在该结点中的序号,若链表中不存在该数据元素则返回空指针。
m阶B-树是一棵( )。
设从键盘输入一个整数的序列:n,a
1
,a
2
,…,a
n
,其中n表示连续输入整数的个数。
(1)试编写一程序按整数值建立一个二叉排序树。
(2)在(1)的基础上将此二叉树上的各整数按降序写入一磁盘文件中。
如果以单链表表示集合,设集合A用单链表LA表示,集合B用单链表LB表示,设计算法求两个集合的差,即A-B。
已知深度为h的二叉树采用顺序存储结构已存放于数组BT[1.2
k
一1]中,请写一非递归算法,产生该二叉树的二叉链表结构。设二叉链表中链结点的构造为(lchild,data,rchild),根结点所在链结点的指针由T给出。
