zoukankan      html  css  js  c++  java
  • N-ary Tree Preorder Traversal 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<int> preorder(Node* root) {
            vector<int> vec;
            unordered_map<Node*,bool> m;
            stack<Node*> s;
            Node* node=root;
            while(node||!s.empty()) {
                while(node) {
                    vec.push_back(node->val);
                    s.push(node);
                    m[node]=true;
                    bool flag=false;
                    for(auto &child:node->children) {
                        if(!m.count(child)) {flag=true;node=child;break;}
                    }
                    if(!flag) node=nullptr;
                }
                if(!s.empty()) {
                    node=s.top();
                    bool flag=false;
                    for(auto& child:node->children) {
                        if(!m.count(child)) {flag=true;node=child;break;}
                    }
                    if(!flag) {node=nullptr;s.pop();}
                }
            }
            return vec;
        }
    };
  • 相关阅读:
    文件上传.py
    文件下载.py
    Visual SVN IIS反向代理设置
    开发者工具
    Linux
    装饰器
    面向对象
    django异常--数据库同步
    浅谈 Mysql
    python网络编程系列
  • 原文地址:https://www.cnblogs.com/LiuQiujie/p/12502917.html
Copyright © 2011-2022 走看看