利用
+栈输出即可
(准确来说应该算是
)
#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);
}