题解
2025-08-13 11:41:54
发布于:广东
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int l[110],r[110],a[110];
void dfs1(int x) {
if (x == 0) return;
cout << a[x] << " ";
dfs1(l[x]);
dfs1(r[x]);
}
void dfs2(int x) {
if (x == 0) return;
dfs2(l[x]);
cout << a[x] << " ";
dfs2(r[x]);
}
void dfs3(int x) {
if (x == 0) return;
dfs3(l[x]);
dfs3(r[x]);
cout << a[x] << " ";
}
int main(){
int n;
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
if(i==1) continue;
int j = 1;
while(true){
if(a[j]>a[i]){
if(l[j]==0) {
l[j] = i;
break;
}else{
j = l[j];
}
}else{
if(r[j]==0){
r[j] = i;
break;
}else{
j = r[j];
}
}
}
}
dfs1(1);
cout << endl;
dfs2(1);
cout << endl;
dfs3(1);
return 0;
}
这里空空如也
有帮助,赞一个