From 383c665dce8a16d0348b9a82ffb43900df1fcf1c Mon Sep 17 00:00:00 2001 From: Lam Haoyin Date: Fri, 8 Apr 2022 08:29:44 +0800 Subject: [PATCH] add: 220408-CN [cpp] --- cpp/2204/220408-CN.cpp | 43 +++++++++++++++++++++++++++++++++++++++++ cpp/2204/CMakeLists.txt | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 cpp/2204/220408-CN.cpp diff --git a/cpp/2204/220408-CN.cpp b/cpp/2204/220408-CN.cpp new file mode 100644 index 0000000..84b50ae --- /dev/null +++ b/cpp/2204/220408-CN.cpp @@ -0,0 +1,43 @@ +#include +#include + +/* + * Definition for a Node. + */ +class Node { +public: + int val; + std::vector children; + + explicit Node(int _val = 0, std::vector _children = {}) : val(_val), children(std::move(_children)) {} +}; + + +class Solution { +public: + static std::vector> levelOrder(const Node* root) { + if (!root) + return {}; + + std::queue> q; + std::vector> ret = {{}}; + + int currentDepth = 0; + q.push({root, 0}); + while (!q.empty()) { + auto n = q.front(); + q.pop(); + + if (n.second > currentDepth) + ret.emplace_back(); + currentDepth = n.second; + + ret.back().push_back(n.first->val); + + for (const auto* ch : n.first->children) + q.push({ch, 1 + n.second}); + } + + return ret; + } +}; diff --git a/cpp/2204/CMakeLists.txt b/cpp/2204/CMakeLists.txt index cadb027..f7c2279 100644 --- a/cpp/2204/CMakeLists.txt +++ b/cpp/2204/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2204) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2204 220407.cpp) +ADD_EXECUTABLE(2204 220408-CN.cpp)