代码随想录算法训练营Day21 | 669. 修剪二叉搜索树 | 108.将有序数组转换为二叉搜索树 | 538.把二叉搜索树转换为累加树

今日任务

669. 修剪二叉搜索树

Code

cpp 复制代码
class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if(root == nullptr){
            return root;
        }
        if(root->val < low){
            return trimBST(root->right, low, high);
        }
        if(root->val > high){
            return trimBST(root->left, low, high);
        }
        root->left = trimBST(root->left, low, high);
        root->right = trimBST(root->right, low, high);
        return root;
    }
};

108.将有序数组转换为二叉搜索树

Code

cpp 复制代码
class Solution {
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {

        function<TreeNode *(int , int)> dfs = [&](int low, int high) -> TreeNode *{
            if(low > high){
                return nullptr;
            }
            int mid = low + (high - low) / 2;
            TreeNode *left = dfs(low, mid - 1);
            TreeNode *right = dfs(mid + 1, high);
            return new TreeNode(nums[mid], left, right);
        };
        return dfs(0, nums.size() - 1);
    }
};

538.把二叉搜索树转换为累加树

Code

cpp 复制代码
class Solution {
public:
    TreeNode* convertBST(TreeNode* root) {
        int sum = 0;
        function<void(TreeNode *)> dfs = [&](auto node)->void{
            if(node == nullptr){
                return;
            }
            dfs(node->right);
            sum += node->val;
            node->val = sum;
            dfs(node->left);
        };
        dfs(root);
        return root;
    }
};
相关推荐
YuanDaima204810 分钟前
双指针基础原理与题目说明
数据结构·人工智能·python·算法·leetcode·手撕代码
别或许12 分钟前
5、高数----一元函数微分学的应用(一)几何应用
算法
wayz1121 分钟前
Day 5:KNN算法与相似K线匹配
人工智能·算法·机器学习
晨曦中的暮雨31 分钟前
Java集合类型主要有哪些?以及各自原理
数据结构·算法
lixinnnn.43 分钟前
01BFS:Three States
算法
晓纪同学1 小时前
EffctiveC++_第三章_资源管理
开发语言·c++·算法
水云桐程序员1 小时前
C语言编程基础,输入与输出
c语言·开发语言·算法
ZPC82101 小时前
MoveIt Servo 与自己编写的 Action Server 通信
人工智能·算法·机器人
jllllyuz1 小时前
采用核函数的极限学习机(KELM)MATLAB实现
算法
apcipot_rain1 小时前
【天梯赛】2026天梯赛模拟赛——题解
开发语言·c++·算法·蓝桥杯·天梯赛