美文网首页
589.n-ary-tree-preorder-traversa

589.n-ary-tree-preorder-traversa

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

    递归

    class Solution {
    public:
        vector<int> preorder(Node* root) {
            if(root == nullptr) return {};
            vector<int> ans;
            preorder(root, ans);
            return ans;
        }
    private:
        void preorder(Node* root, vector<int>& ans){
            if(root == nullptr) return;
            ans.push_back(root->val);
            for(auto n: root->children){
                preorder(n,ans);
            }
        }
    };
    

    迭代

    用到了栈,反向迭代器
    class Solution {
    public:
        vector<int> preorder(Node* root) {
            // 方法:一个就是队列,一个就是栈   
            if(!root) return {};
            stack<Node*> s;
            s.push(root);
            vector<int> ans;
            while(!s.empty()){
                Node* curNode = s.top();s.pop();
                ans.push_back(curNode->val);   
                for(auto n_iter= curNode->children.rbegin();n_iter != curNode->children.rend(); n_iter++){
                    s.push(*n_iter);
                }
            }
            return ans; 
        }
    };
    

    相关文章

      网友评论

          本文标题:589.n-ary-tree-preorder-traversa

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