首页 > 其他分享 >106. Construct Binary Tree from Inorder and Postorder Traversal

106. Construct Binary Tree from Inorder and Postorder Traversal

时间:2023-03-07 13:02:16浏览次数:45  
标签:Binary right TreeNode int Tree construct mapIndex 106 postorder

题目

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

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

思路

本题思路和我前面一篇结题报告:105. Construct Binary Tree from Preorder and Inorder Traversal思路一致。可以说是没有差别。这里就不细致分析了

代码
/**
 * 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:
    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
        //step1:construct hash-tab
        if(postorder.size()==0)
            return NULL;
        unordered_map<int,int> mapIndex;
        for(int i=0;i<inorder.size();i++)
            mapIndex[inorder[i]] = i;
        return helpTree(postorder,0,inorder.size(),0,mapIndex);
    }
private:
    TreeNode* helpTree(vector<int>& postorder,int start,int len,int offest,unordered_map<int,int>& mapIndex)
    {
        if(len<=0)
            return NULL;
        int rootval = postorder[len-1+start];//vist root 
        int i = mapIndex[rootval]-offest;//compute len of left tree
        TreeNode* root = new TreeNode(rootval);
        root->left = helpTree(postorder,start,i,offest,mapIndex);//construct left subtree
        root->right = helpTree(postorder,start+i,len-i-1,offest+i+1,mapIndex);//construct right subtree
        return root;
    }
};

标签:Binary,right,TreeNode,int,Tree,construct,mapIndex,106,postorder
From: https://blog.51cto.com/u_15996214/6105927

相关文章

  • 动态树(Link Cut Tree)
    动态树(LinkCutTree)简介Link/CutTree是一种数据结构,我们用它来解决动态树问题。Link/CutTree又称\(Link-CutTree\),简称\(LCT\),但它不叫动态树,动态树是指一类问......
  • ENGG1310 P2.2 Data, Logic Gates & Binary Computation
    课程内容笔记,自用,不涉及任何assignment,exam答案Notesforself-use,donotincludeanyassignmentsorexamsDataRepresentations这里可以和前面介绍的数字信号/......
  • KDTree实现KNN算法
    KDTree实现KNN算法完整的实验代码在我的github上......
  • F. Timofey and Black-White Tree 2100 (树 根号分治 思维)
    https://codeforces.com/problemset/problem/1790/F题意:给定一棵树,需要将其染为全黑,初始时只有一个点为黑色,给定一个序列c,按招顺序染色,要求每次染色后给出当前任意两黑点......
  • 【学习笔记】dsu on tree
    看到了就来学一下。思想借鉴了一类启发式合并的思想?由于树的分叉结构有可以二分的性质,有重儿子的信息是可以直接从子树继承,轻儿子不超过\(log\)层。于是先计算轻儿子,......
  • Kernel文档 DeviceTree——usage-model.txt
    此文介绍Linux的设备树使用模范。OpenFirmware设备树是用于描述硬件的数据结构和语言。他是一种对硬件的描述,此描述是可被操作系统读的,所以OS不需要硬编码机器的详细信......
  • B+Tree树
    实际上它就是B树的变种,以一颗最大度数(max-degree)为4(4阶)的b+tree为例:所有的元素都会出现在叶子节点,叶子节点形成一个单向链表,每一个节点都会通过一个指针指向下一个元素。......
  • Binary GCD 学习笔记
    算是一点杂项吧,感觉没什么机会用上。0x00前言有时你需要大量且快速的求gcd,像P5435。但是对值域预处理gcd又很麻烦,所以这时候我们可以考虑BinaryGCD。0x01原理......
  • 记录一个mongo数据库TreeMap结构导致数据异常的BUG
    BUG:mongo入库丢失了某些字段,没报错场景:java代码调用mongo入库,一个嵌套结构体,在内部某一层嵌套增加一个对象结构,有几个常量和嵌套对象,2个Map<String,String>,1个Map<String,......
  • SPOJ Query On A Tree IV 题解
    SPOJQueryOnATreeIV题解一个边分治套线段树套堆的题目比较难写但是有不小的启发思路来源和代码都抄自[SPOJ-QTREE4]QUERYONATREEIV题解|KSKUN'sBlog简......