【dfs】SSL 1386 多叉树的前序遍历

利用 d f s +栈输出即可
(准确来说应该算是 b f s )


#include<cstdio>
#include<stack>
using namespace std;int root,l[100001],n,k,fa,d[100001];
struct node{int next,to;}e[100001];
stack<int>s;
inline void dfs(register int st)
{
    s.push(st);//放入
    while(s.size())
    {
        int x=s.top();s.pop();
        printf("%d ",x);//输出
        for(register int i=l[x];i;i=e[i].next) 
            s.push(e[i].to);//继续查找
    }
}
signed main()
{
    scanf("%d",&n);
    for(register int i=1;i<=n;i++)
    {
        scanf("%d%d",&k,&fa);
        if(fa==0) root=k;
        else
        {e[i].to=k;e[i].next=l[fa];l[fa]=i;}
    }
    dfs(root);
}

猜你喜欢

转载自blog.csdn.net/xuxiayang/article/details/81810248