90求条
  • 板块P2171 Hz吐泡泡
  • 楼主caisien
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/8/2 19:55
  • 上次更新2025/8/3 11:06:07
查看原帖
90求条
1409299
caisien楼主2025/8/2 19:55
#include<bits/stdc++.h>

using namespace std;

struct node{
	long long data,lc,rc,d;
};
long long n,dep;
node t[300005];

void put(int s,int m,int ii){
    long long ss =  s;
    while(1){
        if(m <= t[ss].data){
            if(t[ss].lc){
                ss = t[ss].lc;
                continue;
            }else{
                t[ss].lc = ii;
                t[ii].d = t[ss].d + 1;
                dep = max(dep,t[ii].d);
                return;
            }
        }else {
            if(t[ss].rc){
                ss = t[ss].rc;
                continue;
            }else{
                t[ss].rc = ii;
                t[ii].d = t[ss].d + 1;
                dep = max(dep,t[ii].d);
                return;
            }
        }
    }
}

void dfs3(int s){
    if(s > 0){
        if(t[s].lc){
            dfs3(t[s].lc);
        }
        if(t[s].rc){
            dfs3(t[s].rc);
        }
        cout << t[s].data << endl;
    }
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> n;
	cin >> t[1].data;
	t[1].d = 1;
	for(int i = 2,l;i <= n;i++){
		cin >> l;
		t[i].data = l;
		put(1,l,i);
	}
	cout << "deep=" << dep << endl;
	dfs3(1);
	return 0;
}
2025/8/2 19:55
加载中...