先建立bst树,再用dfs求每层的节点数
#include <bits/stdc++.h>
using namespace std;
struct node{
int data,r,l;
}t[1001];
int cnt[1001],c=0;//每层的个数
int insert(int root,int v){
if(root==-1){
root=c++;
t[root].data=v;t[root].l=t[root].r=-1;
}else if(v<=t[root].data){
t[root].l=insert(t[root].l,v);
}else t[root].r=insert(t[root].r,v);
return root;
}int lvl=0;
void dfs(int num,int level){
if(num!=-1){
lvl=lvl<level?level:lvl;
cnt[level]++;
dfs(t[num].r,level+1);dfs(t[num].l,level+1);
}
}
int main()
{
int n,a,b,root=-1;
cin>>n;
for(int i=0; i<n; i++) {scanf("%d",&a);
root=insert(root,a);
}
dfs(root,0);
printf("%d + %d = %d",cnt[lvl],cnt[lvl-1],cnt[lvl]+cnt[lvl-1]);
return 0;
}
不用指针建树~~~~居然写出来了,好开心