zoukankan      html  css  js  c++  java
  • LeetCode 589. N叉树的前序遍历(前序遍历的迭代实现)


    思考:由于前序遍历的思路与深度优先搜索类似,所以前序遍历的迭代形式与深度优先搜索的迭代形式类似。
    而深度优先的过程与出栈入栈的过程很类似,我们就可以利用栈来完成深度优先搜索的迭代
    1.递归

    class Solution {
    public:
        vector<int> preorder(Node* root) {
            vector<int> tree;
            preorder(root,tree);
            return tree;
        }
    
        void preorder(Node*root , vector<int> &tree){
            if(root==NULL) return;
            else{
                tree.push_back(root->val);
            }
            for(int i = 0;i<root->children.size();i++){
                preorder(root->children[i],tree);
            }
            return;
        }
    };
    

    2.迭代

    class Solution {
    public:
        vector<int> preorder(Node* root) {
            vector<int> tree;
            stack<Node*> st;
            if(root!=NULL) st.push(root);
            while(st.empty()==false){
                Node* temp = st.top();
                st.pop();
                tree.push_back(temp->val);
                for(int i = temp->children.size()-1;i>=0;i--){
                    st.push(temp->children[i]);//从最右结点往最左结点插入
                }
            }
            return tree;
        }
    };
    
  • 相关阅读:
    JS 正则查找与替换
    MySQL 批量插入值
    Python/Django 批量下载Excel
    Python/Django 下载Excel2007
    Python/Django 下载Excel2003
    Python3安装Scrapy
    服务器响应状态码
    细说同域-同父域-跨域
    细说Ajax跨域
    PostgreSQL学习
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13625862.html
Copyright © 2011-2022 走看看