/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode *build(vector<int> &preorder,vector<int> &inorder,int pl,int pr,int il,int ir)
{
if(pl > pr || il > ir)
return NULL;
TreeNode *root = new TreeNode(preorder[pl]);
for(int i = il;i<= ir;i++)
{
if(inorder[i]!= preorder[pl])
continue;
root->left = build(preorder,inorder,pl+1,pl+i-il,il,i-1);
root->right = build(preorder,inorder,pl+1+i-il,pr,i+1,ir);
break;
}
}
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
return build(preorder,inorder,0,preorder.size()-1,0,inorder.size()-1);
}
};
这个题目写出了一个bug,因为那个i是从il 到 < = ir