429.n-ary-tree-level-order-trave

2020-05-20  本文已影响0人  Optimization

递归

多层vector的初始化
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        vector<vector<int>> ans;
        levelOrder(root, 0, ans);
        return ans;    
    }
private:
    void levelOrder(Node* root,int d, vector<vector<int>>& ans){
        if(root == nullptr) return;
        // 多层vector的初始化
        while(ans.size()<=d) ans.push_back({});
        
        ans[d].push_back(root->val);
        for(auto node: root->children){
            levelOrder(node, d+1, ans);
        }
    }
};

迭代

队列,深度和层数的使用
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        vector<vector<int>> ans;
        if(!root) return {};
        deque<Node*> q;
        q.push_back(root);
        int deep = 0;
        while(!q.empty()){
            int size = q.size();
            ans.push_back({});
            while(size--){
                Node* curNode = q.front();q.pop_front();

                ans[deep].push_back(curNode->val);
                for(auto n: curNode->children){
                    if(!n) continue;
                    q.push_back(n);
                }
            }
            deep++;
        }
        return ans;
    }
};
上一篇下一篇

猜你喜欢

热点阅读