• POJ2255----Tree Recovery


    题目见此链接

    此题主要考察二叉树,根据给出先序遍历和中序遍历求后序遍历。
    代码如下:

    #include <iostream>
    #include <string>
    //#include <fstream>
    using namespace std;
    
    class Node{
        public:
            Node *left, *right;
            char data;
    };
    
    
    
    //AEFDHZMG
    //build tree
    void build(string preord, string inord, Node *root)
    {
        root->data = preord[0];
        if(preord.length() == 1)
        {
            return ;
        } 
        int rootLoc = inord.find(preord[0]);
        int rightLoc = preord.find(inord[rootLoc+1]);
        //cout << rightLoc << endl;
    
        //建立左子树 
        if(rootLoc > 0)
        {
            root->left = new Node();
            build(preord.substr(1, rootLoc), inord.substr(0, rootLoc), root->left);
        }
    
        //建立右子树 
        if(rightLoc > 0)
        {
            root->right = new Node();
            build(preord.substr(rootLoc + 1), inord.substr(rootLoc+1), root->right);
        }
    
    }
    
    //后序遍历二叉树
    void postorder(Node *root)
    {
        if(root->left)
        {
            postorder(root->left);
        }
        if(root->right)
        {
            postorder(root->right);
        }
        cout << root->data;
    }
    
    int main()
    {
        //ifstream in("data2255.in");
        string preord, inord, postord;
        while (cin >> preord >> inord)
        {
            Node *root = new Node();
            build(preord, inord, root);
            postorder(root);
            cout << endl;
            delete root;
        }
        return 0;
    }
    

      

  • 相关阅读:
    DTDebug的使用
    金字塔原理
    C/C++ 加快项目编译速度
    C/C++ C++11 enum class
    微信公众平台 第三方平台
    Protobuf根据.proto文件在运行期生成message
    工具 Bazel
    计算机网络 OAuth
    计算机网络 WebSocket
    C/C++ 函数默认参数
  • 原文地址:https://www.cnblogs.com/topk/p/6580123.html
Copyright © 2020-2023  润新知