• 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());
        }
    };
  • 相关阅读:
    git学习(一)
    访问注解(annotation)的几种常见方法
    对于元数据的理解
    常用注解介绍
    深入理解Java的接口和抽象类
    POI依据类型设置导出格式
    java泛型
    java 向上转型和向下转型
    cell设置背景颜色为啥不起作用
    Java反射获取对象VO的属性值(通过Getter方法)
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5618810.html
Copyright © 2020-2023  润新知