重建二叉树
/** * 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* reConstructBinaryTree(vector<int> pre,vector<int> vin) { if(pre.size() == 0 || vin.size()==0 || pre.size()!=vin.size()) return NULL; TreeNode *root = new TreeNode(pre[0]); int mid = find(vin.begin(), vin.end(), pre[0])-vin.begin(); vector<int> left_pre(pre.begin()+1,pre.begin()+1+mid); vector<int> left_in(vin.begin(),vin.begin()+mid); vector<int> right_pre(pre.begin()+1+mid,pre.end()); vector<int> right_in(vin.begin()+mid+1,vin.end()); root->left = reConstructBinaryTree(left_pre,left_in); root->right = reConstructBinaryTree(right_pre,right_in); return root; } };
重建二叉树