• 剑指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;
    }
    
  • 相关阅读:
    排序算法-总览
    MySQL插入大批量测试数据
    【剑指offer】面试的流程
    并发编程-内置锁
    并发编程-使用线程安全类
    规约先行-(二十一)设计规约
    规约先行-(二十)服务器
    [转]web.xml什么时候被加载进内存的
    DOM和BOM的理解
    代理&反向代理
  • 原文地址:https://www.cnblogs.com/theodoric008/p/9513469.html
Copyright © 2020-2023  润新知