zoukankan      html  css  js  c++  java
  • 剑指offer 给定二叉树前序,中序遍历序列,求二叉树和后续序列

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    
    
    struct TreeNode {
        int val;
        TreeNode* left;
        TreeNode* right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    class Solution {
    public:
        int find_index(const vector<int>& vec, const int target){
            for(int i = 0; i < vec.size(); i++){
                if(vec[i] == target){
                    return i;
                }
            }
            return -1;
        }
    
        TreeNode* construct(vector<int>& pre, int ps, int pe, vector<int>& vin, int vs, int ve){
            if(ps > pe) return nullptr;
            int value = pre[ps];
            int index = find_index(vin, value);
            auto node = new TreeNode(value);
            node->left = construct(pre, ps+1, ps + index - vs, vin, vs, index-1);
            node->right = construct(pre, ps + index - vs + 1, pe, vin, index + 1, ve);
            return node;
        }
    
        TreeNode* reConstructBinaryTree(vector<int> pre, vector<int> vin) {
            if(pre.empty() || vin.empty() || pre.size() != vin.size()){
                return nullptr;
            }
            return construct(pre, 0, pre.size()-1, vin, 0, vin.size()-1);
        }
    };
    
    void post_order(TreeNode* root){
        if(root == nullptr){
            return;
        }
        post_order(root->left);
        post_order(root->right);
        cout << root->val << ", ";
    }
    
    
    int main() {
        Solution s;
        vector<int> pre = {1,2,4,7,3,5,6,8};
        vector<int> vin = {4,7,2,1,5,3,8,6};
        auto t = s.reConstructBinaryTree(pre, vin);
        post_order(t);
    
        return 0;
    }
    
  • 相关阅读:
    高精度类模板
    NOIP2012 疫情控制
    NOIP2012 借教室
    Uva 长城守卫——1335
    Uva 网络(Network,Seoul 2007,LA 3902)
    oracle 中decode函数用法
    oracle数据库查询出多条数据,合并,之后列转行
    mysql中插入序列表
    mysql中创建event定时任务
    mysql 取得各种时间
  • 原文地址:https://www.cnblogs.com/theodoric008/p/9513469.html
Copyright © 2011-2022 走看看