PAT甲级 1115. Counting Nodes in a BST

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/Mr0cheng/article/details/79501595