题目没什么难度。插入递归一下
#include<iostream>
#include<vector>
#pragma warning(disable:4996)
using namespace std;
struct Node {
int data;
Node *lchild, *rchild;
Node() { lchild = rchild = NULL;}
};
vector<Node> all;
int a[1000];
int s_max=0;
void s_insert(Node *&root,int t,int level)//插入节点
{
if (root == NULL) {
root = &all[t];
a[level]++;//第level层的数目+1
if (level > s_max) s_max = level;//记录最底层的层数
}
else {
if (all[t].data <= root->data)
s_insert(root->lchild, t,level+1);
else
s_insert(root->rchild, t,level+1);
}
}
int main()
{
int N;
cin >> N;
all.resize(N);
Node *root=NULL;
for (int t = 0;t < N;t++)
{
cin >> all[t].data;
s_insert(root,t,0);
}
printf("%d + %d = %d\n", a[s_max], a[s_max - 1], a[s_max] + a[s_max - 1]);
}