zoukankan      html  css  js  c++  java
  • 二叉树的层次遍历

      进行层次遍历时,对某一层的节点访问完后,再按照对它们的访问次序对各个节点的左右节点的左右孩子顺序访问。这样一层一层进行,先访问的节点其左右孩子也要先访问,与队列的操作原则较吻合。因此层次遍历算法采用一个环形队列来实现。

    层次遍历的过程:

      先将根节点进队,在队不为空时循环:从队列中出列一个节点*p,访问它;若它有左孩子节点,将左孩子节点进队;若它有右孩子节点,将右孩子进队。如此操作直到队为空。算法如下:

     1 void LevelOrder(tree *root)
     2 {
     3     tree *p;
     4     tree *que[fb];//定义环形队列,存放节点指针
     5     int front,rear;//定义队头
     6     front = rear = -1;//置队列为空队列
     7     rear++;
     8     que[rear] = root;//根节点指针进队
     9     while(front!=rear){//队列不为空
    10         front =(front + 1) % fb;
    11         p = que[front];//队头出队列
    12         cout<<p->NodeNum<<" ";//输出节点数据
    13         if(p->left!=NULL){//有左孩子时进队
    14             rear = (rear + 1) % fb;
    15             que[rear] = p->left;
    16         }
    17         if(p->right != NULL){//有右孩子时进队
    18             rear = (rear + 1) % fb;
    19             que[rear] = p->right;
    20         }
    21     }
    22 }
    Donghua University
  • 相关阅读:
    Hanlp(汉语言处理包)配置、使用、官方文档
    Mysql 在DOS窗口下的操作
    漂亮的省级下拉选择
    数组的应用排序
    设置外部样式坐标的位置
    动态设置Div坐标
    对联广告
    树形菜单
    隐藏图和图框架
    使用clssneme改变图片或样式
  • 原文地址:https://www.cnblogs.com/ohxiaobai/p/4072360.html
Copyright © 2011-2022 走看看