程式語言 - LeetCode - C++ - 429. N-ary Tree Level Order Traversal



題目:


解答:

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;

    Node() {}

    Node(int _val) {
        val = _val;
    }

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        vector<vector<int>> ans;
        queue<Node*> q;

        if (!root) {
            return ans;
        }

        q.push(root);
        while (!q.empty()) {
            int size = q.size();
            vector<int> t;

            for (int i = 0; i < size; ++i) {
                Node *n = q.front(); q.pop();

                for (auto& c : n->children) {
                    q.push(c);
                }
                t.push_back(n->val);
            }

            if (t.size() > 0) {
                ans.push_back(t);
            }
        }

        return ans;
    }
};