让每个数对应一个id,然后树上的结点ans[] 和左孩子结点ls[] ,右孩子结点rs[] :存这些id,
遍历记录深度
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100 + 7;
map<int, int> mp;
int ls[maxn], rs[maxn]; // 左右孩子
int f[maxn];
int ans[maxn]; // 结点值
int id = 1;
int d[maxn]; // 深度
int n;
void ins(int x, int t) {
// cout << x << " +++ " << t << endl;
if(x < ans[t]) {
if(ls[t] == -1) {
ls[t] = id;
ans[id] = x;
mp[x] = id;
f[id] = t;
id++;
return;
}
else {
ins(x, ls[t]);
}
}
else {
if(rs[t] == -1) {
rs[t] = id;
ans[id] = x;
mp[x] = id;
f[id] = t;
id++;