力扣HOT100之二叉树:102. 二叉树的层序遍历

力扣HOT100之二叉树:102. 二叉树的层序遍历_第1张图片
这道题太简单了,相当于基础的模板题,但凡涉及到层序遍历一定会用到队列来实现,其他的倒没啥好说的,用两层while循环来层序遍历,外层while循环用于控制访问二叉树的每一层,而内层while循环则负责收割每一层的元素,将其加入到一个一维向量中,当内层while循环结束时,直接将收割的一维向量加入到二维向量即可。直接把这种套路记住就可以了。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> result;
        queue<TreeNode*> My_Queue;
        //根节点非空则将其加入队列
        if(root) My_Queue.push(root);
        while(!My_Queue.empty()){
            int size = My_Queue.size();
            vector<int> temp;
            while(size > 0){
                TreeNode* node = My_Queue.front();
                My_Queue.pop();
                size--;
                temp.emplace_back(node -> val);
                if(node -> left) My_Queue.push(node -> left);
                if(node -> right) My_Queue.push(node -> right);
            }
            result.emplace_back(temp);
        }
        return result;
    }
};

你可能感兴趣的:(力扣HOT100,leetcode,算法,职场和发展)