uva 699

#include<iostream>
#include<cstdlib>
#include<string>
#include<malloc.h>
#include<map>
using namespace std;
map<int,int>ma;
int flagg=0;
typedef  struct node
{
    int data;
    struct node*left;
    struct node* right;
    int flag;
}bitnode,*bitree;

void createbittree(bitree *T,int flag3)
{
    int temp;
    cin>>temp;
    cin.ignore();
    flagg++;
    if(temp==-1&&flagg==1)return;
    if(temp==-1)
        *T=NULL;
    else
    {
        *T=(bitree)malloc(sizeof(bitnode));
        if(!(*T))
            exit(-1);
        (*T)->data=temp;
        flagg++;
        (*T)->flag=flag3;
        createbittree(&((*T)->left),flag3-1);
        createbittree(&((*T)->right),flag3+1);
    }
}
void bfstree(bitree T)
{
    if(T)
    {
        ma[T->flag]+=T->data;
        bfstree(T->left);
        bfstree(T->right);
    }
}
int main()
{
    int a;
    int sum=1;
    while(true)
    {
        flagg=0;
        bitree T;
        T=NULL;
        createbittree(&T,0);
        if(flagg==1)break;
        cout<<"Case "<<sum++<<":"<<endl;
        ma.clear();
        bfstree(T);
        map<int,int>::iterator it;
        for(it=ma.begin();it!=ma.end();it++)
            cout<<it->second<<" ";
        cout<<endl;
        cout<<endl;
    }
        return 0;
}

 

posted @ 2012-05-14 15:22  open your eyes  阅读(360)  评论(0)    收藏  举报