diff --git a/cpp/2204/220417.cpp b/cpp/2204/220417.cpp new file mode 100644 index 0000000..6baade9 --- /dev/null +++ b/cpp/2204/220417.cpp @@ -0,0 +1,35 @@ +#include + +struct TreeNode { + int val; + TreeNode* left; + TreeNode* right; + + explicit TreeNode(int x = 0, TreeNode* l = nullptr, TreeNode* r = nullptr) : val(x), left(l), right(r) {} +}; + +class Solution { +public: + static TreeNode* increasingBST(TreeNode* root, TreeNode* greater = nullptr) { + if (!root) + return nullptr; + root->right = root->right ? increasingBST(root->right, greater) : greater; + if (!root->left) + return root; + auto* rl = root->left; + root->left = nullptr; + return increasingBST(rl, root); + } +}; + +int main() { + auto* root = new TreeNode( + 5, + new TreeNode(3, new TreeNode(2, new TreeNode(1)), new TreeNode(4)), + new TreeNode(6, nullptr, new TreeNode(8, new TreeNode(7), new TreeNode(9))) + ); + + auto* newRoot = Solution::increasingBST(root); + + return 0; +} diff --git a/cpp/2204/CMakeLists.txt b/cpp/2204/CMakeLists.txt index a6b2cab..36bd6e6 100644 --- a/cpp/2204/CMakeLists.txt +++ b/cpp/2204/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2204) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2204 220416-CN.cpp) +ADD_EXECUTABLE(2204 220417.cpp)