• HihoCoder第十周——已知前序中序求后序


    思路

    我们定义post_order(str1, str2)为一棵前序遍历的结果为str1,中序遍历的结果为str2的二叉树的后序遍历的结果。
    如果要求解post-order(str1, str2)的话,首先不难发现,根据‘前序遍历’str1=‘根节点’+‘左子树的前序遍历’+‘右子树的前序遍历’,我可以知道这棵二叉树的根节点root便是str1的第一个字符。
    在知道了‘根节点’root之后,便可以利用‘中序遍历’str2=‘左子树的中序遍历’+‘根节点’+‘右子树的中序遍历’,求解出‘左子树的中序遍历’str2L和‘右子树的中序遍历’str2R。
    由于一棵子树的前序遍历和中序遍历的长度相同,那么仍然是根据‘前序遍历’str1=‘根节点’+‘左子树的前序遍历’+‘右子树的前序遍历’,我可以知道从str1的第2个字符开始的str2L.length()个字符便是‘左子树的前序遍历’str1L,而这之后的部分便是‘右子树的前序遍历’str1R。

    实现

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    void post(string pre,string mid){
        if(pre.length() <= 1){
            cout << pre;return;
        }
        size_t loc =  mid.find(pre[0]);
        post(pre.substr(1,loc),mid.substr(0,loc));
        post(pre.substr(loc+1),mid.substr(loc+1));
        cout << pre[0];
    }
    
    int main(){
        string pre,mid;
        cin >> pre >> mid;
        post(pre,mid);
        return 0;
    }
  • 相关阅读:
    webstorm编辑器使用
    css深入理解z-index
    vue-cli安装失败问题
    html5 离线存储
    ESXI安装
    文档相似性匹配
    Hibernate基础
    云存储技术
    Signs of a poorly written jQuery plugin 翻译 (Jquery插件开发注意事项,Jquey官方推荐)
    Jquery类级别与对象级别插件开发
  • 原文地址:https://www.cnblogs.com/nickqiao/p/7583330.html
Copyright © 2020-2023  润新知