按层数层序历遍

按层数层序历遍

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

伪码描述:

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变量是干嘛的?

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

按层数层序历遍

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

原文链接: https://www.cnblogs.com/hyong-bingbing/p/12344619.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    按层数层序历遍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/331121

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午5:55
下一篇 2023年3月1日 下午5:55

相关推荐