用unordered_map代替 循环寻找index(每个结点的值都不一样)
class Solution {
public:
unordered_mapfindindex;
TreeNode* buildTree(vector& preorder, vector& inorder) {
for(int i=0;i& preorder,int prestart,int preend, vector& inorder,int instart,int inend)
{
if(prestart>preend)
return nullptr;
int rootval=preorder[prestart];
TreeNode* root=new TreeNode(rootval);
int index;
index=findindex.at(rootval); //返回容器中存储的键 key 对应的值
// for(int i=instart;i<=inend;i++)
// {
// if(inorder[i]==rootval)
// {
// index=i;
// break;
// }
// }
int leftsize=index-instart;
root->left=build(preorder,prestart+1,prestart+leftsize,
inorder,instart,index-1);
root->right=build(preorder,prestart+leftsize+1,preend,
inorder,index+1,inend);
return root;
}
};



