题解:#重组二叉树#
题目链接:https://www.nowcoder.com/share/jump/5876869471694399526239
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param preOrder int整型vector * @param vinOrder int整型vector * @return TreeNode类 */ TreeNode* reConstructBinaryTree(vector<int>& preOrder, vector<int>& vinOrder) { // write code here if(preOrder.size()==0||vinOrder.size()==0) { return nullptr; } int rootval = preOrder[0]; TreeNode* root = new TreeNode(rootval); int index=0; for(;index<vinOrder.size();index++) { if(vinOrder[index]==rootval) { break; } } vector<int> vinOrderLeft(vinOrder.begin(),vinOrder.begin()+index); vector<int> vinOrderRight(vinOrder.begin()+index+1,vinOrder.end()); vector<int> preOrderLeft(preOrder.begin()+1,preOrder.begin()+1+index); vector<int> preOrderRight(preOrder.begin()+index+1,preOrder.end()); //递归 root->left=reConstructBinaryTree(preOrderLeft, vinOrderLeft); root->right=reConstructBinaryTree(preOrderRight, vinOrderRight); return root; } };#剑指offer#
剑指offer刷题 文章被收录于专栏
坚持!努力!学习