From 81ee098e42f5e9b9098e44e66c6b9377440f88e4 Mon Sep 17 00:00:00 2001 From: eat-swap Date: Sun, 17 Apr 2022 12:43:12 +0800 Subject: [PATCH] add: 220417 [cpp] --- cpp/2204/220417.cpp | 35 +++++++++++++++++++++++++++++++++++ cpp/2204/CMakeLists.txt | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 cpp/2204/220417.cpp 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)