/**
* 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) {
return build(&inorder[0], &postorder[0],inorder.size());
}
TreeNode* build(int* a, int* b, int len)
{
if (len == 0)
return NULL;
int value = b[len-1];
TreeNode* current = new TreeNode(value);
// find the tmp in inorder;
int i=0;
for (; i<len; ++i)
{
if (a[i] == value)
break;
}
current->left = build(&a[0], &b[0], i);
current->right = build (&a[i+1], &b[i], len-i-1);
return current;
}
};
。。。又不是最快的,占坑以后来改