zoukankan      html  css  js  c++  java
  • 106. Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree.

    Note:
    You may assume that duplicates do not exist in the tree.

    ========

    利用:中序+后序遍历

    ====

    code:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        ///
        template<typename Iterator>
        TreeNode *help_buildTree_ip(Iterator in_first,Iterator in_last,
            Iterator post_first,Iterator post_last){
            if(in_first == in_last) return nullptr;
            if(post_first == post_last) return nullptr;
    
            auto val = *prev(post_last);
            TreeNode *root = new TreeNode(val);
    
            auto in_root_pos = find(in_first,in_last,val);
            auto left_size = distance(in_first,in_root_pos);
            auto post_left_last = next(post_first,left_size);
    
            root->left = help_buildTree_ip(in_first,in_root_pos,post_first,post_left_last);
            root->right = help_buildTree_ip(next(in_root_pos),in_last,post_left_last,prev(post_last));
    
            return root;
        }
        TreeNode* buildTree_ip(vector<int> &inorder,vector<int> &postorder){
            return help_buildTree_ip(inorder.begin(),inorder.end(),postorder.begin(),postorder.end());
        }
    };
  • 相关阅读:
    开启Chrome内核浏览器的多线程下载功能
    golang fasthttp
    国内外短信接码平台合集
    jsrsasign 进行 RSA 加密、解密、签名、验签
    sysbench对自装MySQL数据库进行基准测试
    MySQL慢查询
    Logstash的配置
    简单的MySQL主从状态监控
    aria2c备忘
    DataX 整合后重新编译打包
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5618810.html
Copyright © 2011-2022 走看看