代码演示:
#include <bits/stdc++.h>
using namespace std;
int a[101][2];
void dfs1(int u)
{
if (u == 0)
{
return ;
}
printf("%d ",u);
dfs1(a[u][0]); //利用递归
dfs1(a[u][1]);
}
void dfs2(int u)
{
if (u == 0)
{
return ;
}
dfs2(a[u][0]); //利用递归
printf("%d ",u);
dfs2(a[u][1]);
}
void dfs3(int u)
{
if (u == 0)
{
return ;
}
dfs3(a[u][0]); //利用递归
dfs3(a[u][1]);
printf("%d ",u);
}
int main()
{
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
a[x][0] = y;
a[x][1] = z;
//0表示左孩子,1表示右孩子
}
dfs1(1);
printf("\n");
dfs2(1);
printf("\n");
dfs3(1);
return 0;
}