leetcode 429. N叉树的层序遍历(N-ary Tree Level Order Traversal)

题目描述:

给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

例如,给定一个 3叉树 :

返回其层序遍历:

    [
         [1],
         [3,2,4],
         [5,6]
    ]

说明:

  1. 树的深度不会超过 1000
  2. 树的节点总数不会超过 5000

解法:

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

    Node() {}

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        vector<vector<int>> res;
        vector<Node*> cur;
        vector<Node*> nxt;
        if(root){
            cur.push_back(root);
            while(!cur.empty()){
                nxt.clear();
                vector<int> lst;
                for(Node* node : cur){
                    lst.push_back(node->val);
                    for(Node* child : node->children){
                        nxt.push_back(child);
                    }
                }
                res.push_back(lst);
                cur = nxt;
            }
        }
        return res;
    }
};

猜你喜欢

转载自www.cnblogs.com/zhanzq/p/10579781.html