版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr0cheng/article/details/79501595
建树
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000+10;
int cnt[maxn];
struct node{
node *l,*r;
int data;
};
node *insert(node *tree,int data){
if(tree==NULL){
tree = new node();
tree->l=NULL;
tree->r=NULL;
tree->data = data;
return tree;
}
if(tree->data >= data){
tree->l = insert(tree->l,data);
}else{
tree->r = insert(tree->r,data);
}
return tree;
}
void dfs(node *tree,int depth){
if(tree==NULL)return;
++cnt[depth];
dfs(tree->l,depth+1);
dfs(tree->r,depth+1);
}
int main(){
int n,temp;
scanf("%d",&n);
node *tree=NULL;//init
for(int i=0;i<n;++i){
scanf("%d",&temp);
tree = insert(tree,temp);
}
dfs(tree,0);
bool flag=false,aflag=false;
int preCnt;
for(int i=maxn-1;i>=0;--i){
if(cnt[i]!=0){
if(flag){
aflag=true;
printf(" + %d = %d",cnt[i],cnt[i]+preCnt);
break;
}
else{
flag=true;
preCnt=cnt[i];
printf("%d",cnt[i]);
}
}
}
if(!flag){
printf("0 + 0 = 0");
}else if(flag && !aflag){
printf(" + 0 = %d",preCnt,preCnt);
}
return 0;
}