题解 | #牛群的树形结构重建II#
牛群的树形结构重建II
https://www.nowcoder.com/practice/ad81ec30cca0477e82e33334a652a6ae
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param preOrder int整型vector * @param inOrder int整型vector * @return TreeNode类 */ int find_index(vector<int>& preOrder, vector<int>& inOrder) { for (int i = 0; i< inOrder.size(); i++) { if (preOrder[0] == inOrder[i]) { return i; } } return 0; } TreeNode* buildTreeII(vector<int>& preOrder, vector<int>& inOrder) { // write code here if (inOrder.size() == 0) return nullptr; TreeNode* root = new TreeNode(preOrder[0]); int index = find_index(preOrder, inOrder); vector<int> pre = vector<int>(preOrder.begin()+1, preOrder.begin()+index+1); vector<int> in = vector<int>(inOrder.begin(),inOrder.begin()+index); root->left = buildTreeII(pre, in); vector<int> pre1 = vector<int>(preOrder.begin()+index+1, preOrder.end()); vector<int> in1 = vector<int>(inOrder.begin()+index+1,inOrder.end()); root->right = buildTreeII(pre1, in1); return root; } };