日野弥生:勉強しよう

LeetCode 102 - 二叉树的层序遍历

发表于2025年02月16日

#广度优先搜索 #树 #队列 #二叉树

层次遍历属于广度优先搜索,优先使用队列数据结构即可处理。本题要求不同层次的数据放在不同的向量中,最后存储于二维向量。需要在遍历过程动态resize向量的大小。

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root)
            return {};
        
        /* 通过键值对方式存储层数 */
        queue<pair<TreeNode*, int>> q;
        vector<vector<int>> result{};
        q.push(make_pair(root, 0));
        while(!q.empty())
        {
            auto curr = q.front();
            q.pop();

            /* 判断是否需要扩容 */
            if(curr.second >= (int)result.size())
            {
                result.resize(curr.second + 1);
            }
                result[curr.second].push_back(curr.first->val);

            /* 层次遍历左子和右子 */
            if(curr.first->left)
                q.push({curr.first->left, curr.second + 1});
            if(curr.first->right)
                q.push({curr.first->right, curr.second + 1});
        }
        return result;
    }
};

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/

上一篇

LeetCode 145 - 二叉树的后序遍历

下一篇

LeetCode 104 - 二叉树的最大深度