问答题

[说明]
二叉树的二叉链表存储结构描述如下:
typedef struct BiTNode
datatype data;
struct BiTNode *lchild, * rchild; /*左右孩子指针*/
BiTNode,* BiTree;
对二叉树进行层次遍历时,可设置一个队列结构,遍历从二叉树的根结点开始,首先将根结点指针入队列,然后从队首取出一个元素,执行下面两个操作:
(1) 访问该元素所指结点;
(2) 若该元素所指结点的左、右孩子结点非空,则将该元素所指结点的左孩子指针和右孩子指针顺序入队。
此过程不断进行,当队列为空时,二叉树的层次遍历结束。
下面的函数实现了这一遍历算法,其中Visit(datatype a)函数实现了对结点数据域的访问,数组queue[MAXNODE]用以实现队列的功能,变量front和rear分别表示当前队首元素和队尾元素在数组中的位置。
[函数]
void LevelOrder(BiTree bt) /*层次遍历二叉树bt*/
BiTree Queue[MAXNODE];
int front,rear;
if(bt= =NULL)return;
front=-1;
rear=0;
queue[rear]= (1) ;
while(front (2) )
(3) ;
Visit(queue[front]->data); /*访问队首结点的数据域*/
if(queue[front]—>lchild!:NULL)
rear++;
queue[rear]= (4) ;

if(queue[front]->rchild! =NULL)
rear++;
queue[rear]= (5) ;

【参考答案】

(1) bt (2) ! =rear (3) front+ + (4) queue [front]->lchild......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
[说明] 某单位组织一次职业技术考核比赛,由十名评委对选手的现场表现打分(0到100以内的数值)。本程序接收原始评分后,去掉一个最高分、一个最低分,最后计算并输出选手最后得分。在接收输入第i个评分时,若输入数据的类型、范围不正确,程序将给出相应提示,并等待下一次输入,直至正确接收第i个评分为止。程序的运行界面如下: 在开发过程中,文本框名为Text1,界面上有上至下三个按钮分别取名为CmdMark、CmdReresh和CmdExit。[Visual Basic代码]Private Sub CmdMark_Click() ’按钮“输入评分”的单击事件响应代码 Dim i As Integer,temp As Variant ’声明变量 Dim marks(1 To 10),maxMark,minMark,sumMark,mark As Single sumMark=0 Text1.Text=“编号”&Chr(9)&“评分”& vbCrLf For i=1 To 10 ’接收十个评分输入 Do While 1=1 ’验证并接收第i个评委的评分 temp=InputBox(“请输入”&i&“号评委的评分:”) If (1) IsNumeric(temp)Then Msg Box“数据类型错误,请重试!” ElseIf CSng(temp)<0 Or CSng(temp)>100 Then MsgBox“数值范围错误,请重试!” Else:Exit Do End If Loop marks(i)=CSng(temp) If i=1 Then maxMark= (2) :minMark= (2) If marks(i)>maxMark Then maxMark=marks(i) If minMark>marks(i)Then (3) sumMark=sumMark+marks(i) Text1.Text=Text1.Text & i & Chr(9) & marks(i) & vbCrLf输出第i个评委的评分 Next mark=( (4) ) 8 ’计算选手最后得分 Text1.Text=Text1.Text & 去掉一个最高分: &maxMark&vbCrLf&_ 去掉一个最低分: &minMark&vbCrLf&_ 选手最后得分: &markEnd SubPrivate Sub Command2_Click() ’按钮“刷新屏幕”的单击事件响应代码 (5) .Text=“单击”输入评分“按钮,开始统分……”End SubPrivate Sub Command3_Click() 按钮“退出程序”的单击事件响应代码 EndEnd Sub