难度不高,先建树,然后dfs统计就可以了,输出没有比较坑人的情况,
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
struct node {
int val;
node *left, *right;
};
int cnt[1005] = {};
int max_level = 0;
void insert_t(node* &root, int x) {
if (root == NULL) {
root = new node;
root->val = x;
root->left = root->right = NULL;
return;
}
if (x <= root->val) insert_t(root->left, x);
else insert_t(root->right, x);
}
void dfs(node* root, int depth) {
if (root == NULL) return;
cnt[depth]++;
if (depth > max_level) max_level = depth;
dfs(root->left, depth + 1);
dfs(root->right, depth + 1);
}
int main() {
int n;
cin >> n;
node* root = NULL;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
insert_t(root, x);
}
dfs(root, 0);
printf("%d + %d = %d", cnt[max_level], cnt[max_level - 1], cnt[max_level] + cnt[max_level - 1]);
return 0;
}