LeetCode //C - 669. Trim a Binary Search Tree

张春  论坛元老 | 2025-4-20 11:24:37 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1732|帖子 1732|积分 5196

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.
 
Example 1:


   Input: root = [1,0,2], low = 1, high = 2
Output:[1,null,2]
  Example 2:


   Input: root = [3,0,4,null,2,null,null,1], low = 1, high = 3
Output: [3,2,null,1]
  Constraints:



  • The number of nodes in the tree is in the range                                         [                            1                            ,                            1                                       0                               4                                      ]                                  [1, 10^4]                     [1,104].
  •                                         0                            <                            =                            N                            o                            d                            e                            .                            v                            a                            l                            <                            =                            1                                       0                               4                                            0 <= Node.val <= 10^4                     0<=Node.val<=104
  • The value of each node in the tree is unique.
  • root is guaranteed to be a valid binary search tree.
  •                                         0                            <                            =                            l                            o                            w                            <                            =                            h                            i                            g                            h                            <                            =                            1                                       0                               4                                            0 <= low <= high <= 10^4                     0<=low<=high<=104
From: LeetCode
Link: 669. Trim a Binary Search Tree

Solution:

Ideas:



  • If root->val < low, the current node and its left subtree are discarded (too small).
  • If root->val > high, the current node and its right subtree are discarded (too big).
  • Otherwise, recursively trim the left and right subtrees and return the current node.
Code:

  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. *     int val;
  5. *     struct TreeNode *left;
  6. *     struct TreeNode *right;
  7. * };
  8. */
  9. struct TreeNode* trimBST(struct TreeNode* root, int low, int high) {
  10.     if (root == NULL)
  11.         return NULL;
  12.     // If the value is less than low, the entire left subtree can be ignored
  13.     if (root->val < low)
  14.         return trimBST(root->right, low, high);
  15.     // If the value is greater than high, the entire right subtree can be ignored
  16.     if (root->val > high)
  17.         return trimBST(root->left, low, high);
  18.     // Otherwise, recursively trim both subtrees
  19.     root->left = trimBST(root->left, low, high);
  20.     root->right = trimBST(root->right, low, high);
  21.     return root;
  22. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表