zoukankan      html  css  js  c++  java
  • 按层数层序历遍

    按层数层序历遍

    这里我先贴一个按层数层序历遍的模板。

    伪码描述:

    void 按层数层序遍历(根节点){
        初始化队列,临时变量;
        将根节点放入队列中;
        while(队列不为空){
            获取队列长度size;
            while(size不为0){
                取出队首结点;
                if(队首结点的左孩子不为NULL) 将队首结点的左孩子放进队列;
                if(队首结点的右孩子不为NULL) 将队首结点的右孩子放进队列;
                弹出队首结点;
                完成一个结点的遍历,size--;
            }
        }
    }
    

    c++代码:

    struct TreeNode {
          int val;
          TreeNode *left;
          TreeNode *right;
          TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     };
    void BFS(TreeNode* root){
        int size=0;
        TreeNode *temp;
    	queue<TreeNode*> que;
        que.push(root);
        while(!que.empty()){
            size=que.size();
            while(size--){
                temp=que.front();
                que.pop();
                if(temp->left!=NULL) que.push(temp->left);
                if(temp->right!=NULL) que.push(temp->right);
            }
        }
    }
    

    详解:

    先仔细看看伪码描述,笔者自认为已经描述的很清楚了。倘若仍有不解,再看这里的详解。

    size变量是干嘛的?

    用来记录每一层结点的数量,以达到层数历遍的效果。

    主要过程已经用图画出来了。应该相当清楚了。希望能让各位看懂。

  • 相关阅读:
    Switch开关按钮控件----------WinForm控件开发系列
    图片旋转播放控件----------WinForm控件开发系列
    谷歌密码查看器
    Tarjan求LCA
    [题解]Hankson的趣味题
    [NOI Online]文具订购
    二分图判定
    hash表
    KMP算法
    拓扑排序入门
  • 原文地址:https://www.cnblogs.com/cell-coder/p/12344619.html
Copyright © 2011-2022 走看看