Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
Subscribe to see which companies asked this question
分析:
注意用指针,不要用下标。
代码:
/**
* 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* build(int* t1,int *t2,int len)
{
if(len==0) return NULL;
if(len==1) return new TreeNode(*t1);
TreeNode* root= new TreeNode(*t1);
int shift=0;
while(*(t2+shift)!=*t1)
{
shift++;
}
root->left=build(t1+1,t2,shift);
root->right=build(t1+shift+1,t2+shift+1,len-shift-1);
return root;
}
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
return build(&preorder[0],&inorder[0],preorder.size());
}
};