C++ method
重建二叉树
http://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { int n=pre.size(); return helper(pre,0,n,vin,0,n); } TreeNode* helper(vector<int>& pre,int prestart,int preend,vector<int>& vin,int vinstart,int vinend) { if(prestart>=preend or vinstart>=vinend) return nullptr; int mid=pre[prestart]; int dis=find(vin.begin()+vinstart,vin.begin()+vinend,mid)-(vin.begin()+vinstart); TreeNode* root=new TreeNode(mid); root->left=helper(pre,prestart+1,prestart+dis+1,vin,vinstart,vinstart+dis); root->right=helper(pre,prestart+dis+1,preend,vin,vinstart+dis+1,vinend); return root; }