80pts
查看原帖
80pts
1489233
xusong123b楼主2025/5/10 20:31
#include<bits/stdc++.h>
using namespace std;
int n;
struct tree_point {
    int l,r;
}a[100005];
void dfs1(int pos) {
    cout << pos << " ";
    if(pos*2<=100000 && a[pos].l != 0) dfs1(a[pos].l);
    if(pos*2+1<=100000 && a[pos].r != 0) dfs1(a[pos].r);
}
void dfs2(int pos) {
    if(pos*2<=100000 && a[pos].l != 0) dfs2(a[pos].l);
    cout << pos << " ";
    if(pos*2+1<=100000 && a[pos].r != 0) dfs2(a[pos].r);
}
void dfs3(int pos) {
    if(pos*2<=100000 && a[pos].l != 0) dfs3(a[pos].l);
    if(pos*2+1<=100000 && a[pos].r != 0) dfs3(a[pos].r);
    cout << pos << " ";
}
int main() {
    cin >> n;
    for(int i = 1;i<=n;i++) {
        int left,right;
        cin >> left >> right;
        a[i].l = left;
        a[i].r = right;
    }
    dfs1(1);cout << endl;
    dfs2(1);cout << endl;
    dfs3(1);cout << endl;
}
2025/5/10 20:31
加载中...