zoukankan      html  css  js  c++  java
  • UVA536 二叉树重建 Tree Recovery

    根据先序和中序确定后序。树中每个结点的值都是不同的,不需要特判了。

    递归构造完左右子树后输出根即为后序。

    string pre,in;
    unordered_map<char,PII> tree;
    unordered_map<char,int> pos;
    
    int build(int prel,int prer,int inl,int inr)
    {
        if(prel > prer) return -1;
    
        char root=pre[prel];
        int k=pos[root];
        int leftlen=k-inl;
        int lchild=build(prel+1,prel+leftlen,inl,k-1);
        int rchild=build(prel+leftlen+1,prer,k+1,inr);
        cout<<root;
        tree[root]={lchild,rchild};
        return root;
    }
    
    int main()
    {
        while(cin>>pre>>in)
        {
            for(int i=0;i<in.size();i++) pos[in[i]]=i;
            build(0,pre.size()-1,0,in.size()-1);
            cout<<endl;
        }
        //system("pause");
        return 0;
    }
    

    (update)
    对代码作了些许简化。

    string pre,in;
    unordered_map<char,int> pos;
    
    int build(int prel,int prer,int inl,int inr)
    {
        if(prel > prer) return -1;
    
        char root=pre[prel];
        int k=pos[root];
        int leftlen=k-inl;
        build(prel+1,prel+leftlen,inl,k-1);
        build(prel+leftlen+1,prer,k+1,inr);
        cout<<root;
        return root;
    }
    
    int main()
    {
        while(cin>>pre>>in)
        {
            for(int i=0;i<in.size();i++) pos[in[i]]=i;
            build(0,pre.size()-1,0,in.size()-1);
            cout<<endl;
        }
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    php7垃圾回收机制
    PHP-FPM
    go main.main之前的准备
    ElementUI MessageBox 弹框
    ElementUI table 样式修改
    ElementUI Dropdown 下拉菜单
    vue+django实现下载文件
    ElementUI 点击展开/隐藏
    vue+django实现websocket连接
    ElementUI 上传文件以及限制
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14323606.html
Copyright © 2011-2022 走看看