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

UVA122 二叉树的层次遍历

时间:2019-07-03 00:52:23      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:space   value   https   move   class   scanf   const   层次遍历   delete   

题目链接

https://vjudge.net/problem/UVA-122

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
const int maxn=256+10;
char s[maxn];
struct Node{
    bool have_value;
    int v;
    Node *left,*right;
    Node():have_value(false),left(NULL),right(NULL){};
};
Node *root;
Node *newnode(){return new Node();}
bool failed;
void addnode(int v,char *s)
{
    int n=strlen(s);
    Node *u=root;
    for(int i=0;i<n;i++)
    {
        if(s[i]==L)
        {
        if(u->left==NULL)
        u->left=newnode();
        u=u->left;
    }
    else if(s[i]==R)
    {
        if(u->right==NULL)
        u->right=newnode();
        u=u->right;
    }
    }
    if(u->have_value)
    failed = true;
    u->v=v;
    u->have_value=true;
}
void remove_tree(Node *u)
{
    if(u==NULL)return;
    remove_tree(u->left);
    remove_tree(u->right);
    delete u;
}
bool bfs(vector<int> &ans)
{
    queue<Node*>q;
    ans.clear();
    q.push(root);
    while(!q.empty())
    {
        Node *u=q.front();
        q.pop();
        if(!u->have_value)return false;
        ans.push_back(u->v);
        if(u->left!=NULL)q.push(u->left);
        if(u->right!=NULL)q.push(u->right);
    }
    return true;
}
bool read_input()
{
    failed =false;
    root=newnode();
    for(;;)
    {
        if(scanf("%s",s)!=1)return false;
        if(strcmp(s,"()")==0)break;
        int v;
        sscanf(&s[1],"%d",&v);
        addnode(v,strchr(s,,)+1);
    }
    return true;
}
int main()
{
vector<int>ans;
while(read_input())
{
    if(!bfs(ans))failed=1;
       if (failed) printf("not complete\n");
        else {
            for (int i = 0; i < ans.size(); i++) {
                if (i != 0) printf(" ");
                printf("%d", ans[i]);
            }
            printf("\n");
        }
    }
  

return 0;
}

 

UVA122 二叉树的层次遍历

标签:space   value   https   move   class   scanf   const   层次遍历   delete   

原文地址:https://www.cnblogs.com/hh13579/p/11123810.html

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