🐕都不用链表写
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#define YURI 赛高
#define N 100005
int n,a[N],ls[N],rs[N],dep[N],idx;
void insert(int u,int val) {
if(val<a[u]) {
if(ls[u])insert(ls[u],val);
else {
idx++;
a[idx]=val;
ls[u]=idx;
return ;
}
}
if(val>=a[u]) {
if(rs[u])insert(rs[u],val);
else {
idx++;
a[idx]=val;
rs[u]=idx;
return ;
}
}
}
void dfs(int u,int fat) {
dep[u]=dep[fat]+1;
if(ls[u]==0&&rs[u]==0) {
printf("%d %d\n",a[u],dep[u]);
return ;
}
if(ls[u])dfs(ls[u],u);
if(rs[u])dfs(rs[u],u);
}
signed main() {
scanf("%d",&n);
for(int i=1; i<=n; i++) {
int x;
scanf("%d",&x);
if(!idx) {
idx++;
a[1]=x;
} else insert(1,x);
}
// for(int i=1;i<=idx;i++)printf("%d ",a[i]);printf("\n\n\n");
dfs(1,0);
return 1+1==3;
}