MLE #2
查看原帖
MLE #2
914275
__rnfmabj__楼主2023/7/30 19:22
#include <bits/stdc++.h>
using namespace std;
const int N=1e7;
int n,ans=0;
struct tree{
	int data,l,r;
}a[N];
void add(int k){
	for (int i=1;i;){
		if (k>a[i].data){
			if (a[i].r==0){
				a[i].r=k;
				a[a[i].r].data=k;
				break ;
			}
			i=a[i].r;
		}
		if (k<a[i].data){
			if (a[i].l==0){
				a[i].l=k;
				a[a[i].l].data=k;
				break ;
			}
			i=a[i].l;
		}
	}
}
void sc(int k){
	if (a[k].l!=0){
		sc(a[k].l);
	}
	if (a[k].r!=0){
		sc(a[k].r);
	}
	cout<<a[k].data<<endl;
}
void dfs(int step,int now){
	if (a[now].l==0 && a[now].r==0){
		ans=max(ans,step);
		return ;
	}
	if (a[now].l) dfs(step+1,a[now].l);
	if (a[now].r) dfs(step+1,a[now].r);
}
int main(){
	cin>>n;
	for (int i=1;i<=n;i++){
		int k;
		cin>>k;
		if (i==1){
			a[i].data=k;
			continue;
		}
		add(k);
	}
	dfs(1,1);
	cout<<"deep="<<ans<<endl;
	sc(1);
	return 0;
}
2023/7/30 19:22
加载中...