题目考察的知识点:二叉树
题目解答方法的文字分析:遍历这棵树,储存到vector中,然后修改指针的左右结点
本题解析所用的编程语言:c++
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return TreeNode类 */ void PreInorder(TreeNode* root, vector<TreeNode*>& v) { if (root == nullptr) return; PreInorder(root->left, v); v.push_back(root); PreInorder(root->right, v); } TreeNode* flattenII(TreeNode* root) { // write code here if (root == nullptr) return nullptr; vector<TreeNode*> v; PreInorder(root, v); for (int i = 0; i < v.size() - 1; ++i) { v[i]->left = nullptr; v[i]->right = v[i + 1]; } return v[0]; } };