diff --git a/cpp/2204/220416.cpp b/cpp/2204/220416.cpp new file mode 100644 index 0000000..b90a5df --- /dev/null +++ b/cpp/2204/220416.cpp @@ -0,0 +1,26 @@ +#include + +struct TreeNode { + int val; + TreeNode* left; + TreeNode* right; + explicit TreeNode(int x, TreeNode* left = nullptr, TreeNode* right = nullptr) : val(x), left(left), right(right) {} +}; + +class Solution { +public: + static TreeNode* convertBST(TreeNode* root) { + if (!root) + return nullptr; + int x = 0; + std::function reversedInOrderTraverse = [&](TreeNode* r) { + if (r->right) + reversedInOrderTraverse(r->right); + r->val = (x += r->val); + if (r->left) + reversedInOrderTraverse(r->left); + }; + reversedInOrderTraverse(root); + return root; + } +}; diff --git a/cpp/2204/CMakeLists.txt b/cpp/2204/CMakeLists.txt index b3f2d3c..39ae9f1 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 220413-CN.cpp) +ADD_EXECUTABLE(2204 220416.cpp)