106. Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:java web 跨域访问 编辑:程序博客网 时间:2024/06/04 19:19

106. Construct Binary Tree from Inorder and Postorder Traversal

思路:
recursion

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:    vector<int>::iterator getIndex(vector<int>::iterator inB, vector<int>::iterator inE, int target) {        vector<int>::iterator index = inB;        for (index; index != inE; index++)            if (*index == target)                break;        return index;    }    TreeNode* inPost(vector<int>::iterator inB,    vector<int>::iterator inE,                     vector<int>::iterator postB,  vector<int>::iterator postE) {        if (postE == postB) {            return NULL;        } else {            TreeNode* root = new TreeNode(*(postE-1));            vector<int>::iterator inI = getIndex(inB, inE, root->val);            root->left  = inPost(inB,   inI, postB, postB+(inI-inB));            root->right = inPost(inI+1, inE, postB+(inI-inB), postE-1);            return root;        }    }    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {        return inPost(inorder.begin(), inorder.end(), postorder.begin(), postorder.end());    }};
阅读全文
0 0