设图G是一棵树,它有n2个2次分支点,n3个3次分支点,……,nk个k次分支点,求G中叶结点数.
设图G是一棵树,它有n2个2次分支点,n3个3次分支点,……,nk个k次分支点,求G中叶结点数.
设图G是一棵树,它有n2个2次分支点,n3个3次分支点,……,nk个k次分支点,求G中叶结点数.
(a)A中任何两个顶点在G中都不是相互邻接的;(b)B中任何两个顶点在G中都不是相互邻接的。例如,图8-34就是二部图。对V(G)的一个划分可能是A=(0,3,4,6)和B=(1,2,5,7).
(1)试编写一个算法,判断图G是否是二部图。如果图G是二部图,则你的算法应当把项点划分成为具有上述性质的两个互不相交的子集A和B。证明:当用邻接表表示图G时,这个算法的复杂度可以做到O(n+e)。其中n是图G的顶点个数,e是边数。
(2)证明:任何-棵树都是二部图
(3)证明:当且仅当图G不包含奇数条边的回路时.它是二部图。
【程序5说明】
设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用“()”括起来的各子树的列表(如有子树的话),各子列表间用“,”分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。
本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。
【程序5】
include<Stdio.h>
include<Stdlib.h>
define M 3
typedef struct node{char val;
struct node,subTree[M];
}NODE;
char buf[255],*Str=buf;
NODE * d=NULL
NODE*makeTree()/*由列表生成M叉树*/
{int k;NODE*s;
s=(1);
s->val= *Str++;
for(k=0;k<M;k++)s->subTree[k]=NULL;
if(* str='('){
k=0;
do{str++;
s->sub Tree[k]=(2);
if(*Str==')'){Str++;break;}
k=k+1;
}while((3));
}
return s;
}
void walkTree(NODE*t)/*由M又树输出列表*/
{int i;
if(t!=NULL){
(4)
if(t->subTree[0]==NULL)return;
putchar('(');
for(i=0;i<M;i++){
(5);
if(i!=M-1&&t->subTree[i+1]!=NULL)
putchar(',');
}
putchar(')');
}
}
void main()
{printf("Enter exp:");
scanf("%s",str);
d=makeTree();
walkTree(d);putchar('\n");
}
阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【程序5说明】
设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用"()"括起来的各子树的列表(如有子树的话),各子列表间用","分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。
本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。
【程序5】
#include
#include
B.h>
#define M 3
typedef struct node{char val;
struct node*subTree[M];
}NODE;
char buf[255],*str=buf;
NODE*d=NULL
NODE*makeTree()/*由列表生成M叉树*/
{int k;NODE*s;
s= (1) ;
s->val=*str++;
for(k=0;ksubTree[k]=NULL;
if(*str=′(′){
k=0;
do{str++;
s->subTree[k]= (2) ;
if(*str==′)′){str++;break;}
k=k+1;
}while((3) );
}
return s;
}
void walkTree(NODE*t)/*由M叉树输出列表*/
{int i;
if(t!=NULL){
(4)
if(t->subTree[0]==NULL)return;
putchar(′(′);
for(i=0;i
(5) ;
if(i!=M-1&&t->subTree[i+1]!= NULL)
putchar(′,′);
}
putchar(′)′);
}
}
void main()
{printf("Enter exp:");
scanf("%s",str);
d=makeTree();
walkTree(d);putchar(′\n′);
}
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!