【面试系列】N叉树的层序遍历

题意:
原题链接

思路:
先加入第一层,然后遍历该层所有元素加入到新的一层中,再把当前层的元素加入到答案中即可。

代码:

/*
// 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>> res;
        if(root == NULL) return res;
        
        vector<Node*> vec = {
    
    root};
        while(true) {
    
    
            vector<Node*> son;
            for(auto &u : vec) {
    
    
                if(u == NULL) continue;
                for(auto &v : u->children)
                    son.push_back(v);
            }
            if(vec.size()) {
    
    
                vector<int> tmp;
                for(auto &u : vec) tmp.push_back(u->val);
                res.push_back(tmp);
            } else break;
            swap(vec, son);
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43900869/article/details/119801791