[主观题]

阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。

[说明]

求树的宽度,所谓宽度是指在二叉树的各层上,具有结点数最多的那一层的结点总数。本算法是按层次遍历二叉树,采用一个队列q,让根结点入队列,若有左右子树,则左右子树根结点入队列,如此反复,直到队列为空。

[函数]

int Width ( BinTree *T

{

int front=-1, rear=-1; /*队列初始化*/

int flag=0, count=0, p; /*p用于指向树中层的最右边的结点, flag 记录层中结点数的最大值*/

if ( T!=Null)

{

rear++;(1);

flag=1;

p=rear;

}

while ((2))

{

front++;

T=q [front]];

if (T->lchild!=Null )

{

roar+-+;(3);

count++;

}

if ( T->rchild!=Null )

{

rear++; q[rear]=T->rchild;(4);

}

if (front==p ) // 当前层已遍历完毕

{

if((5))

flag=count;

count=0;

p=rear, //p 指向下一层最右边的结点

}

}

return ( flag );

}

参考答案与解析:

相关试题

阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(说明) 某单

[试题]阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(说明)某单位准备进行一次选举,对指定的n名(n<80)候选人进行投票。为了简化选举工作,事先印制了写有这n名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上被涂黑的圆圈数不得超过3个,也不得少于1个,否则视为无效选票。投票结束后,所有选票经计算机扫描处理,形成了描述选票状态的文本文件。例如,n=8时所形成的文件如下:01011000100101001001100011111111000000000011100

  • 查看答案
  • 阅读以下说明和C£«£«代码,将应填入(n)处的字句写在答题纸的对应栏内。说明

    [试题]阅读以下说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。说明通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中。应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证Configure类只能有一个实例。这样, Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。C.++代码#include<iostream.h>class Configure{(1):C.onfigure

  • 查看答案
  • 阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。(说明) 假设

    [试题]阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。(说明)假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:c[i][j]:将任务i分配给工人j的费用;task[i]:值为0表示任务i未分配,值为j表示任务i分配给工人j;worker[k]:值为0表示工人k未分配任务,值为1表示

  • 查看答案
  • 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 本

    [主观题]阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename,char*word)是从指定的文件中得到单词。char*strdup(char*S)是复制S所指向的字符串,并返回复制字符串的地址。[C程序]include <stdio

  • 查看答案
  • 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。(说明) 实现

    [试题]阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。(说明)实现矩阵(3行3列)的转置(即行列互换)。例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400 700200 500 800300 600 900(函数)int fun(int array[3][3]){int i,j,t;for(i=0;(1);i++)for(j=0;(2);j++){t=array[i][j];(3);(4);}}}main(){int i,j

  • 查看答案
  • 试题二 阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

    [试题]试题二阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(函数2.1说明)函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:"LEVEL"是回文字符串,而"LEVAL"不是。(函数2.1)int palindrome(char s[]){char*pi,*pj;pi=s;pj=s+strlen(s)-1;while(pi<pj &&

  • 查看答案
  • 试题三 阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

    [试题]试题三阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为typedef struct node

  • 查看答案
  • 试题四阅读下列函数说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。

    [试题]试题四阅读下列函数说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。[函数说明]函数DeleteNode(Bitree *r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:typedef struct Tnode{int data;struct Tnode *Lchild,*Rchild;}*Bitree;在二叉查找树上删除一个结点时,要考虑三种情况:1若待删除的结点p是叶子结点

  • 查看答案
  • 试题三 阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

    [试题]试题三阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(函数3说明)函数DeleteNode(Bitree*r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:typedef struct Tnode{int data;/*结点的键值*/struct Tnode*Lchild,*Rchild;/*指向左、右子树的指针*/}*Bitree;在二叉查找树上删除一个结点时,要考

  • 查看答案
  • 试题二 阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 (

    [试题]试题二阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct{int *elem;/*栈的存储区*/int max; /*栈的容量

  • 查看答案