二叉树的层序遍历

102. Binary Tree Level Order Traversal

广度优先搜索

将每个结点的层号记录下。

cpp 复制代码
/**
 * 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>> res;
        if(!root) return res;
        res.resize(2000);
        queue<tuple<TreeNode*,int>> Q;
        Q.push(make_tuple(root,0));
        tuple<TreeNode*,int> temp;
        int maxlevel = 0;
        while(!Q.empty()){
            temp = Q.front();
            res[get<1>(temp)].push_back(get<0>(temp)->val);
            if(get<1>(temp) > maxlevel) maxlevel = get<1>(temp);
            Q.pop();
            if(get<0>(temp)->left)
                Q.push(make_tuple(get<0>(temp)->left,get<1>(temp)+1));
            if(get<0>(temp)->right)
                Q.push(make_tuple(get<0>(temp)->right,get<1>(temp)+1));
        }
        res.resize(maxlevel+1);
        return res;
    }
};
相关推荐
ULTRA??1 小时前
插入排序算法实现(二分查找搜索版本)
c++·算法
Elias不吃糖1 小时前
LeetCode 71:简化 Unix 路径(Simplify Path)——栈 / vector
算法·leetcode·
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2025.12.15 题目:2110.股票平滑下跌阶段的数目
笔记·算法·leetcode
智者知已应修善业8 小时前
【求中位数】2024-1-23
c语言·c++·经验分享·笔记·算法
地平线开发者8 小时前
PTQ 量化数值范围与优化
算法·自动驾驶
sali-tec9 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
测试人社区-小明9 小时前
智能弹性伸缩算法在测试环境中的实践与验证
人工智能·测试工具·算法·机器学习·金融·机器人·量子计算
罗西的思考9 小时前
【Agent】MemOS 源码笔记---(5)---记忆分类
人工智能·深度学习·算法
qq_4335545412 小时前
C++数位DP
c++·算法·图论
AshinGau13 小时前
Softmax 与 交叉熵损失
神经网络·算法