注册 登录
编程论坛 数据结构与算法

求高手帮我解释一程序

xy2bl 发布于 2010-12-03 13:16, 541 次点击
void LevelOrder(BTNode *bt) /*层次遍历二叉树bt*/   
    { BTNode* queue[MAXSIZE];
      int front,rear;
      if (bt==NULL) return;
      front=0;      /*非循环队列*/
      rear=0;
      queue[rear++]=bt;
      while(front!=rear)
          {printf("%c",queue[front]->cdata);        /*访问队首结点的数据域*/
             if (queue[front]->lchild!=NULL)   /*将队首结点的左孩子指针入队列*/
             {  queue[rear]=queue[front]->lchild;rear++;
             }
            if (queue[front]->rchild!=NULL)   /*将队首结点的右孩子指针入队列*/
            {  queue[rear]=queue[front]->rchild; rear++;
         }
谁能帮我解释一下什么意思
尤其是这部分if (queue[front]->lchild!=NULL)   /*将队首结点的左孩子指针入队列*/
             {  queue[rear]=queue[front]->lchild;rear++;
             }
            if (queue[front]->rchild!=NULL)   /*将队首结点的右孩子指针入队列*/
            {  queue[rear]=queue[front]->rchild; rear++;
         }
2 回复
#2
chenhaiquanw2010-12-04 08:00
void LevelOrder(BTNode *bt) /*层次遍历二叉树bt*/   
{
    BTNode* queue[MAXSIZE];
      int front, rear;
      if (bt == NULL)
          return;
      front = 0;      /*非循环队列*/
      rear = 0;
      queue[rear++] = bt;
      while (front != rear)
          {
             printf("%c", queue[front]->cdata);        /*访问队首结点的数据域*/
             if (queue[front]->lchild != NULL)   /*将队首结点的左孩子指针入队列*/
             {
                 queue[rear] = queue[front]->lchild;
                 rear++;
             }
            if (queue[front]->rchild != NULL)   /*将队首结点的右孩子指针入队列*/
            {
                queue[rear] = queue[front]->rchild;
                rear++;
         }
/*如下的树在输出1节点的同时要把1的左右孩子的节点分别放到队列尾部,当然在输出1的同时,还要把1出队列,队列最初存的就是1节点,所以经过第一次循环后1出列23入队列,然后同样的2输出,45入队列2出对列(345),然后输出3 ,67入队列,3出队列(4567)然后就一直输出…最后结果就是1234567...注意编程格式哦*/
   1
 2   3
4  56  7

#3
xy2bl2010-12-05 12:02
谢谢
1