题解 | #重建二叉树#
重建二叉树
http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
class Solution { public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) { // 递归法 if(pre.size()==0) return nullptr; int first = pre[0],pos_in_mid = 0; TreeNode * head = new TreeNode(first); for(pos_in_mid = 0; pos_in_mid < vin.size(); pos_in_mid++) if(vin[pos_in_mid] == first) break; head->left=reConstructBinaryTree({pre.begin()+1,pre.begin()+1+pos_in_mid},{vin.begin(),vin.begin()+pos_in_mid}); head->right=reConstructBinaryTree({pre.begin()+pos_in_mid+1,pre.end()},{vin.begin()+pos_in_mid+1,vin.end()}); return head; } };