669. 修剪二叉搜索树

思路

二叉搜索树(BST)的修剪功能。通过递归遍历树节点,移除所有值不在给定范围[low, high]内的节点。对于小于low的节点,保留其右子树;对于大于high的节点,保留其左子树。算法处理了根节点可能被移除的特殊情况,并重新连接父节点与保留的子树。最终返回修剪后的BST根节点,确保所有节点值都在指定范围内。

代码

cpp 复制代码
class Solution {
public:
    int l,h;
    TreeNode* r;
    int qx(TreeNode* a,TreeNode* syc,bool f) {
        if(!a) {
            return 0;
        }
        qx(a->left,a,0);
        qx(a->right,a,1);
        if(a->val<=l) {
            a->left=nullptr;
            if(a->val<l) {
                if(a==r) {
                    r=a->right;
                }
                else {
                    if(syc) { 
                        if(f) {
                            syc->right=a->right;
                        }
                        else {
                            syc->left=a->right;
                        }
                    }
                }          
            }
        }
        else {
            if(a->val>=h) {
                a->right=nullptr;
                if(a->val>h) {
                    if(a==r) {
                        r=a->left;
                    }
                    else {
                        if(syc) { 
                            if(f) {
                                syc->right=a->left;
                            }
                            else {
                                syc->left=a->left;
                            }
                        }
                    }       
                }
            }   
        }     
        return 0;
    }
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        l=low;
        h=high;
        r=root;
        qx(r,nullptr,0);
        return r;
    }
相关推荐
卷福同学3 小时前
QClaw内测体验,能用微信指挥AI干活了
人工智能·算法·ai编程
sali-tec3 小时前
C# 基于OpenCv的视觉工作流-章34-投影向量
图像处理·人工智能·opencv·算法·计算机视觉
xiaoye-duck3 小时前
《算法题讲解指南:递归,搜索与回溯算法--递归》--3.反转链表,4.两两交换链表中的节点,5.快速幂
数据结构·c++·算法·递归
Eward-an3 小时前
【算法竞赛/大厂面试】盛最多水容器的最大面积解析
python·算法·leetcode·面试·职场和发展
山栀shanzhi3 小时前
归并排序(Merge Sort)原理与实现
数据结构·c++·算法·排序算法
阿豪学编程4 小时前
LeetCode438: 字符串中所有字母异位词
算法·leetcode
Trouvaille ~4 小时前
【递归、搜索与回溯】专题(七):FloodFill 算法——勇往直前的洪水灌溉
c++·算法·leetcode·青少年编程·面试·蓝桥杯·递归搜索回溯
地平线开发者4 小时前
征程 6P codec decoder sample
算法·自动驾驶
地平线开发者4 小时前
征程 6X Camera 接入数据评估
算法·自动驾驶
Storynone4 小时前
【Day23】LeetCode:455. 分发饼干,376. 摆动序列,53. 最大子序和
python·算法·leetcode