美文网首页
1130 Infix Expression(25 分)

1130 Infix Expression(25 分)

作者: zjh3029 | 来源:发表于2018-08-25 16:06 被阅读0次
    #include<iostream>
    #include<vector>
    #include<string>
    #include<map>
    #include<algorithm>
    #include <set>
    using namespace std;
    
    struct node
    {
        string data;
        int left;
        int right;
        node(string a, int b, int c)
        {
            data = a;
            left = b;
            right = c;
        }
    };
    vector<node>vm;
    
    int cnt = 0;
    int dfs(int next,bool flag)
    {
        if (vm[next].right == -1&&flag==false)
        {
            cout <<"("<<vm[next].data;
            return 0;
        }
        if (vm[next].right == -1 && flag ==true)
        {
            cout << vm[next].data<<")";
            while (cnt!=0)
            {
                cnt--;
                cout << ")";
            }
            cnt = 0;
            return 0;
        }
        if (vm[next].left != -1)
            dfs(vm[next].left - 1,false);
        if (vm[next].left == -1 && vm[next].right != -1)
        {
            cout << "(";
            cnt++;
        }
        cout << vm[next].data;
        dfs(vm[next].right-1,true);
        
    }
    int main()
    {
        int M,b,c;
        string a;
        set<int>s;
        cin>>M ;
        for (int i = 0; i < M; i++)
        {
            cin >>a >> b >> c;
            node nn(a, b, c);
            vm.push_back(nn);
            s.insert(b);
            s.insert(c);
        }
        int start;
        for (int i = 1; i <=M; i++)
        {
            if (s.find(i) == s.end())
            {
                start = i;
                break;
            }
        }
        dfs(start - 1,false);
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:1130 Infix Expression(25 分)

          本文链接:https://www.haomeiwen.com/subject/ikcgiftx.html