题解 | #重建二叉树#
重建二叉树
http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
class Solution { public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { if(!pre.size()) return NULL; int index=-1; for(int i=0; i<vin.size(); i++) if(vin[i]==pre[0]) index=i; TreeNode *node=new TreeNode(pre[0]); if(index>0) { vector<int> leftpre(pre.begin()+1,pre.begin()+index+1), leftvin(vin.begin(),vin.begin()+index); node->left=reConstructBinaryTree(leftpre,leftvin); } if(index<vin.size()-1) { vector<int> rightpre(pre.begin()+index+1,pre.end()), rightvin(vin.begin()+index+1,vin.end()); node->right=reConstructBinaryTree(rightpre,rightvin); } return node; } };