lq、p无公共祖先r
}结束A
cestorr
r
27、二部图(bipartitegraph)G(V,E)是一个能将其结点集V分为两不相交子集V1和V2VV1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在图G中也均不相邻。r
(1).请各举一个结点个数为5的二部图和非二部图的例子。r
(2).请用C或PASCAL编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂度。设G用二维数组A来表示,大小为
(
为结点个数)。请在程序中加必要的注释。若有必要可直接利用堆栈或队列操作。【r
r
28、4、tvoidLi
kList_reverseLi
klistLr
链表的就地逆置为简化算法假设表长大于2r
r
pL
extqp
extsq
extp
extNULLr
whiles
extr
r
q
extppqr
qsss
ext把L的元素逐个插入新表表头r
r
q
extps
extqL
extsr
Li
kList_reverser
r
29、由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。r
defi
eMAX100r
typedefstructNoder
chari
fostructNodelli
krli
kTNODEr
charpredMAXi
odMAXr
mai
i
targci
targvr
TNODErootr
ifargc3exit0r
strcpypredargv1strcpyi
odargv2r
rootrestorepredi
odstrle
predr
postorderrootr
r
TNODErestorecharpposchariposi
t
r
TNODEptr;charrposi
tkr
if
0retur
NULLr
ptri
fo1_______r
for2_______rposipos
rposifrpospposbreakr
k3_______r
ptrlli
krestoreppos14_______kr
ptrrli
krestore5_______krpos1
1kr
retur
ptrr
r
postorderTNODEptrr
ifptrNULLretur
r
postorderptrlli
kpostorderptrrli
kpri
tf“c”ptri
for
r
r
30、假设K1,…,K
是
个关键词,试解答:r
试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K1,K2,…,K
时,用算法建立一棵以LLINKRLINK链接表示的二叉查找树。r
r
31、1prchild2plchild3plchild4ADDQQplchild5ADDQQprchildr
251trchild
ull2trchild
ull3N04cou
ttlchild5cou
ttrchildr
261top2stacktopprchild3top4stacktopplchildr
271ppos根结点(2)rposipos3rposipos4ipos5ppos1r
r
32、本题应使用深度优先遍历,从主调函数进入dfsv时,开始记数,若退出dfs前,已访问完有向图的全部顶点(设为
个),则有向图有根,v为根结点。将
个顶点从1到
编号,各调用一次dfs过程,就可以求出全部的根结点。题中有向图的邻接表存储结构、r