429. N 叉树的层序遍历

41 阅读1分钟

与二叉树的层序遍历区别:二叉树只有两个子树,而N叉树有N个节点,仅此而已。
N叉树的N个子树使用一个vectotr<Node*> children;保存

/*
// 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>> result;
        if(!root) {
            return result;
        }
        queue<Node*> que;
        que.push(root);
        while(!que.empty()) {
            vector<int> vec;
            int n = que.size();
            for(int i = 0; i < n; i++) {
                Node* node = que.front();
                que.pop();
                vec.push_back(node->val);
                for(auto node : node->children) {
                    que.push(node);
                }
            }
            result.push_back(vec);
        }
        return result;
    }
};