From 6305f8be73bd52696b421da48fae7029b2f1745b Mon Sep 17 00:00:00 2001 From: eat-swap Date: Fri, 15 Apr 2022 18:13:44 +0800 Subject: [PATCH] add: 220415 [cpp] --- cpp/2204/220415.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 cpp/2204/220415.cpp diff --git a/cpp/2204/220415.cpp b/cpp/2204/220415.cpp new file mode 100644 index 0000000..574864d --- /dev/null +++ b/cpp/2204/220415.cpp @@ -0,0 +1,29 @@ +#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) {} +}; + +/** + * 669. Trim a Binary Search Tree + * Given the root of a binary search tree and the lowest and highest boundaries as low and high, trim the tree so that all its elements lies in [low, high]. Trimming the tree should not change the relative structure of the elements that will remain in the tree (i.e., any node's descendant should remain a descendant). It can be proven that there is a unique answer. + * Return the root of the trimmed binary search tree. Note that the root may change depending on the given bounds. + */ + +class Solution { +public: + static TreeNode* trimBST(TreeNode* root, int low, int high) { + if (!root) + return nullptr; + if (root->val < low) + return trimBST(root->right, low, high); + if (high < root->val) + return trimBST(root->left, low, high); + root->left = trimBST(root->left, low, high); + root->right = trimBST(root->right, low, high); + return root; + } +};