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;
    }
    
  • 相关阅读:
    绍一集训Round#2
    CF 799B T-shirt buying
    Luogu P2827 蚯蚓
    Luogu P4053 [JSOI2007]建筑抢修
    【LGR-049】洛谷7月月赛
    浅谈可持久化数据结构
    CF 888E Maximum Subsequence
    在平衡树的海洋中畅游(三)——Splay
    浅谈单调栈/队列
    CF 859E Desk Disorder
  • 原文地址:https://www.cnblogs.com/theodoric008/p/9513469.html
Copyright © 2011-2022 走看看