代码:
class Solution {
public:
TreeNode* create(int zz,int zy,int xz,int xy,vector<int>& preorder, vector<int>& inorder)
{
if(xz>xy) return NULL;
TreeNode* root=new TreeNode;
root->val=preorder[xz];
int k;
for(k=zz;k<=zy;k++)
if(inorder[k]==preorder[xz]) break;
int num=k-zz;
root->left=create(zz,zz+num-1,xz+1,xz+num,preorder,inorder);
root->right=create(zz+num+1,zy,xz+num+1,xy,preorder,inorder);
return root;
}
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
TreeNode* root=create(0,inorder.size()-1,0,preorder.size()-1,preorder,inorder);
return root;
}
};