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;
    }
相关推荐
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark1 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
码流子1 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven1 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark1 天前
从算法设计模式看编程思维的抽象能力4
算法
2601_962218611 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法