美文网首页
429.n-ary-tree-level-order-trave

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

作者: Optimization | 来源:发表于2020-05-20 14:01 被阅读0次

    递归

    多层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;
        }
    };
    

    相关文章

      网友评论

          本文标题:429.n-ary-tree-level-order-trave

          本文链接:https://www.haomeiwen.com/subject/fuugohtx.html