zoukankan      html  css  js  c++  java
  • 二叉树的层序遍历(队列+BFS)

    由BFS得到的层序结果是一个一位数组,而我们要得到二维数组,则需要:

    在每一层遍历开始前,先记录队列中的

    结点数量 n(也就是这一层的结点数量),然后一口气处理完这一层的 n 个结点。

    在while循环的每一轮,都是将当前层的结点全部出队,再将下一层的所有结点入队,就实现了层次遍历

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<vector<int>> levelOrder(TreeNode* root) {
    13         vector<vector<int> > res;
    14         if(!root) return res;
    15         queue<TreeNode*> q;
    16         q.push(root);//根节点入队
    17         while(!q.empty()){
    18             vector<int> tmp;
    19             int curSize=q.size();//记录当前队列里元素个数
    20             for(int i=0;i<curSize;i++){//处理当前层所有节点
    21                 TreeNode* node=q.front();
    22                 q.pop();
    23                 tmp.push_back(node->val);
    24                 if(node->left) q.push(node->left);//下一层的节点加入
    25                 if(node->right) q.push(node->right);
    26             }
    27             res.push_back(tmp);//处理完一层就将tmp加入res中
    28         }
    29         return res;
    30     }
    31 };
  • 相关阅读:
    NSRunloop-基本概念
    GCD—NSThread-多线程的基本用法
    NSURLConnection-网络访问(同步异步)
    ASIHttpRequest网络使用框架
    XML与JSON解析
    iOS 设置系统音量和监听系统音量变化
    iOS_字典数组 按key分组和排序
    iOS 自定义字体设置
    日期选择和输入弹框
    iOS 耳机线控
  • 原文地址:https://www.cnblogs.com/nilbook/p/13773985.html
Copyright © 2011-2022 走看看