zoukankan      html  css  js  c++  java
  • 给定前序和中序遍历,输出后序遍历。

    啊啊啊啊,今天有事没能去听老赵的讲座好遗憾。上一次是范玮琪张敬轩的演唱会,开在家门口的演唱会都没去。这次是ssp计划发起者的讲座,同样是开在家门口的,我都与之插肩而过。

    从这一篇开始就是正式的“技术”博客了。姑且叫“技术”吧,词穷,我知道技术含量不高。。若有任何想法,欢迎大家一起交流讨论。

    今天看了《ACM-ICPC程序设计系列:图论及应用》第二章关于树的部分。主要是关于一些树的定义和一些算法。

    书上的例题只给了思路没有代码。我在网上找到了原题。

    View Code
    /*
    【题目来源】 
    http://acm.cs.ecnu.edu.cn/problem.php?problemid=1284
    
    【题目分析】 
    给定树的前序遍历和中序遍历,要求输出后序遍历。
    
    【思路分析】 
    1.前序遍历中:第一个元素就是根。 
    
    2.中序遍历中:
    找到根的位置。
    根的左边是根的左子树的中序遍历,右边是根的右子树的中序遍历。
    得到左子树元素个数L。
    
    3.前序遍历中:
    除去根,前L个元素是左子树的前序遍历。剩下的是右子树的前序遍历。 
    
    4.这样就得到了左子树和右子树的前序遍历和中序遍历。对左子树和右子树递归下去,一定会出现树空的情况或只剩下一个元素的情况。
    当树空的时候返回,当元素只有一个的时候,输出来并返回。 对左子树和右子树递归下去完成后就输出根节点。这样就得到了完整的后序遍历。 
    
    【附加细节】 
    substr(index, n) 从index开始(包括index)连续n个
    
    【小小感受】 
    这道题思路清晰的时候写的,一次就AC了,感觉很好。以前很多情况总是思路没那么清晰就开始敲代码,结果就是要修改好多次才能AC。
    所以呢。。思考还是比较重要的。 
    */
    #include <iostream>
    #include <string>
    using namespace std;
    
    void solve(string pre, string in)
    {
        if (pre.size() <= 1)
        {
            if (pre.size() == 1)
                cout << pre[0];
            return;
        }
        int index = in.find(pre[0]);
    
        string left_Pre = pre.substr(1, index);
    
        string right_Pre = pre.substr(index+1, pre.size()-1-index);
    
        string left_In = in.substr(0, index);
    
        string right_In = in.substr(index+1, in.size()-1-index);
    
        solve(left_Pre, left_In);//
    
        solve(right_Pre, right_In);//
    
        cout << pre[0];//
    
        return;
    }
    
    int main()
    {
        string pre, in, post;
    
        while (cin >> pre >> in)
        {
            solve(pre, in);
    
            cout << endl;
        }
    }

     

     

     

  • 相关阅读:
    关于spring中Assert的应用(方法入参检测工具类)
    索引与排序,重复索引与冗余索引,索引碎片与维护
    大数据量分页优化
    理想的索引
    索引覆盖
    聚簇索引
    mysql 索引
    表的优化与列类型选择
    mysql show profiles 使用分析sql 性能
    show processlist,sysbench压力测试工具
  • 原文地址:https://www.cnblogs.com/chenyg32/p/2786229.html
Copyright © 2011-2022 走看看