说明.txt
来自「LevelTraverse.c 上次写的“cengxubianlierchash」· 文本 代码 · 共 32 行
TXT
32 行
说明:
1.上次写的“二叉树层序遍历程序”遍历不能将二叉树的所有结点都遍历,现对其做了微小修改,并调试成
功。改动处仅为以下用双虚线括起来的部分。即整个程序的其他地方未做任何改动,以便大家容易读懂。
2.上次不能完全遍历的原因是队列不能进行正确判空(即将非空的队列误判为空队列)。而造成这种情况的
原因不在判空函数(头尾指针同指向头接点时则的出为空),而在于出队列函数(即下面的)中在当取出的
元素为最后一个时,没有将头尾指针指向相同接点。
/* *****大家仅需将下面这个函数中的双虚线中的内容与上次的相应部分作对比即可******* */
int DeQueue(LinkQ *Q,BTNode *e)
{/*从队列中去掉一个二叉数结点,并用e返回*/
QNode *p;
if(EmptyQueue(*Q))
exit(ERROR);
/*--------------------------------*/
p=Q->front->next;
Q->front->next=p->next;
if(Q->front->next==NULL)
Q->rear=Q->front;
/*如果出队后,队列为空,则使头尾指针同指向头结点,从而使判空函数才能得出正确判断*/
/*--------------------------------*/
*e=p->data;
free(p);
return OK;
}
/* ****************************************************************************** */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?