力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法_第1张图片


目录

题目描述

题目解析

题目答案

题目所用知识点

最后


题目描述

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法_第2张图片力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法_第3张图片


题目解析

使用队列来暂存每一层的节点,通过读取队列中的节点来遍历它的下一层节点。每一层节点的个数由levelSize来确定,以循环的形式依次遍历。当每次levelSize减为0时,此时queue中只剩余下一层的节点,据此重新赋值levelSize,当queue不为空时依次循环遍历。


题目答案

class Solution {
public:
    vector> levelOrder(TreeNode* root) {
        vector> vv;

        if (root == nullptr)
        {
            return vv;
        }

        int levelSize = 1;
        queue qu;
        qu.push(root);

        while (!qu.empty()) {
            vector v;
            while (levelSize--) {
                TreeNode* tmp = qu.front();
                qu.pop();
                v.push_back(tmp->val);

                if (tmp->left != nullptr) {
                    qu.push(tmp->left);
                }
                if (tmp->right != nullptr) {
                    qu.push(tmp->right);
                }
            }
            levelSize = qu.size();
            vv.push_back(v);
        }
        return vv;
    }
};


题目所用知识点

queue常用接口

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法_第4张图片

vector常用接口

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法_第5张图片


最后

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法_第6张图片

你可能感兴趣的:(题目分享:一些容易遗忘的小点,leetcode,数据结构,算法)