码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1622

时间:2014-11-23 12:54:24      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

http://acm.hdu.edu.cn/showproblem.php?pid=1622

白书上6.3.2二叉树层次遍历的例题,层次遍历用bfs,建立二叉树,很基础的题目

bubuko.com,布布扣
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>

using namespace std;

struct node{
    int vis,v;
    node *l,*r;
};

node *root;

node* newnode(){
    node *u=new node;
    if(u!=NULL){
        u->vis=0;
        u->l=u->r=NULL;
    }
    return u;
}

int failed;

void addnode(int v,char* s){
    int len=strlen(s);
    node* u=root;
    for(int i=0;i<len;i++){
        if(s[i]==L){
            if(u->l==NULL)u->l=newnode();
            u=u->l;
        }
        else if(s[i]==R){
            if(u->r==NULL)u->r=newnode();
            u=u->r;
        }
    }
    if(u->vis)failed=1;
    u->v=v;
    u->vis=1;
}

char s[305];

void remove_tree(node* u){
    if(u==NULL)return;
    remove_tree(u->l);
    remove_tree(u->r);
    delete u;
}

int input(){
    failed=0;
    remove_tree(root);
    root=newnode();
    while(1){
        if(scanf("%s",s)==EOF)return 0;
        if(!strcmp(s,"()"))break;
        int v;
        sscanf(&s[1],"%d",&v);
        addnode(v,strchr(s,,)+1);
    }
    return 1;
}

int st,ans[305];

int bfs(){
    queue <node*> q;
    q.push(root);
    while(!q.empty()){
        node* u=q.front();
        q.pop();
        if(u->vis==0)return 0;
        ans[st++]=u->v;
        if(u->l!=NULL)q.push(u->l);
        if(u->r!=NULL)q.push(u->r);
    }
    return 1;
}

int main(){
    while(input()){
        if(failed)puts("not complete");
        else{
            st=0;
            if(!bfs())puts("not complete");
            else{
                for(int i=0;i<st;i++){
                    if(!i)
                        printf("%d",ans[i]);
                    else 
                        printf(" %d",ans[i]);
                }
                putchar(\n);
            }
        }
    }
    return 0;
}
View Code

 

HDU 1622

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/xiaohongmao/p/4116322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!