• UVA122 二叉树的层次遍历


    题目链接

    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
    ");
            else {
                for (int i = 0; i < ans.size(); i++) {
                    if (i != 0) printf(" ");
                    printf("%d", ans[i]);
                }
                printf("
    ");
            }
        }
      
    
    return 0;
    }
  • 相关阅读:
    term "JavaScript"
    Pro Git
    Pro Git
    Pro Git
    git
    flask
    OJ
    [蓝桥杯]Huffuman树
    priority_queue优先队列
    [蓝桥杯]高精度加法
  • 原文地址:https://www.cnblogs.com/hh13579/p/11123810.html
Copyright © 2020-2023  润新知