记得BST的定义根据题目需求改一下就ok了,这次pat全是送分的QAQ。
#include <bits/stdc++.h>
using namespace std;
int maxLayer = 0;
map<int, int> mp;
vector<vector<int>> v(5);
struct node {
int val, layer;
struct node *lc, *rc;
};
node *build (int val, int layer, node *tree) {
if (tree == NULL) {
tree = new node();
tree->val = val;
tree->layer = layer;
mp[layer]++;
}
else if (val <= tree->val)
tree->lc = build (val, layer + 1, tree->lc);
else if (val > tree->val)
tree->rc = build (val, layer + 1, tree->rc);
if (layer > maxLayer) maxLayer = layer;
return tree;
}
int main() {
int n, a;
node *root = NULL;
scanf ("%d", &n);
for (int i = 0; i < n; i++) {
scanf ("%d", &a);
root = build (a, 0, root);
}
queue<node*> q;
q.push(root);
while (!q.empty()) {
node *now = q.front();
q.pop();
if (now->lc != NULL) q.push(now->lc);
if (now->rc != NULL) q.push(now->rc);
}
printf ("%d + %d = %d", mp[maxLayer], mp[maxLayer - 1], mp[maxLayer] + mp[maxLayer - 1]);
}