输入一个整数n(n <= 100000),表示二叉树中结点个数,编号为1~n。约定1号结点为二叉树的根节点。然后输入n行,每行包括两个整数,第i行表示编号为i的结点的左子节点和右子节点的编号。如果某个结点没有左子节点,那么对应输行的第一个整数为0;如果某个结点没有右子节点,那么对应行的第二个整数为0。
先序遍历输出此二叉树每个结点的编号,每行输出一个编号。
先序遍历(DLR),是二叉树遍历的一种,也叫做先根遍历、前序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。
Input
第一行:一个整数n 接下来n行,每行有两个整数
Output
输出n行,每行一个整数,表示节点编号。
Sample Input
5
2 5
3 4
0 0
0 0
0 0
Sample Output
1
2
3
4
5
#include"iostream"
#include"string"
#include"algorithm"
using namespace std;
struct p{
int l,r;
}s[100005];
void dfs(int x)
{
if(x==0)
{
return;
}
cout<<x<<endl;
dfs(s[x].l);
dfs(s[x].r);
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i].l>>s[i].r;
}
dfs(1);
return 0;
}