106. Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:手机淘宝2015旧版本5.4 编辑:程序博客网 时间:2024/05/17 04:18

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

Note:

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

思路:和上题类似。

class Solution {public:    unordered_map<int,int> map;    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {        if(postorder.empty()) return NULL;    for(int i = 0; i < inorder.size(); i++)    {    map.insert(pair<int,int>(inorder[i],i));    }        return buildTreeHelper(postorder,0,postorder.size()-1,inorder,0,inorder.size()-1);    }        TreeNode* buildTreeHelper(vector<int>&postorder, int pstart, int pend, vector<int>&inorder, int istart, int iend)    {    if(pstart > pend || istart > iend) return NULL;    TreeNode* root = new TreeNode(postorder[pend]);    int index = map[root->val];    int num = index - istart;    root->left = buildTreeHelper(postorder,pstart, pstart + num - 1, inorder,istart,index - 1);    root->right = buildTreeHelper(postorder,pstart + num, pend-1,inorder,index+1,iend);        return root;    }};


0 0
原创粉丝点击