代码随想录第二十六天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树

思路:这道题目主要需要考虑当找到一个值不在这个区间时,他的子树如何继续处理,比如如果小于区间最小值,那么其右子树还是有可能有符合的值,所以需要进行进一步递归处理,大于区间最大值,则其左子树也有可能在区间内,最后分别返回左右子树,所有这些情况考虑之后,最后返回处理好的树就可以。

我的代码:

cpp 复制代码
class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if(root==NULL) return NULL;
        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. 将有序数组转换为二叉搜索树

思路:本题考构建二叉树,用中序遍历构建二叉树,先找到中间节点,在从其左右分别构建左右子树。左右都构建完之后再返回根节点就可以。

我的代码:

cpp 复制代码
class Solution {
private:
    TreeNode* tranversal(vector<int>& nums,int left,int right) {
        if(left>right) return NULL;
        int mid=(left+right)/2;
        TreeNode* root=new TreeNode(nums[mid]);
        root->left=tranversal(nums,left,mid-1);
        root->right=tranversal(nums,mid+1,right);
        return root;
    }
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {
    return tranversal(nums,0,nums.size()-1);
    }
};

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

思路:这道题刚开始看题目都没看懂是什么意思,后面理解题目之后其实就很好做了,就是从右到左来遍历数组累加就可以,用到一个pre节点的值,每轮更新就可以。

我的代码:

cpp 复制代码
class Solution {
private:
    int pre;
    void tranversal(TreeNode* root) {
      if(root==NULL) return;
      tranversal(root->right);
      root->val+=pre;
      pre=root->val;
      tranversal(root->left);  
    }
public:
    TreeNode* convertBST(TreeNode* root) {
        pre=0;
        tranversal(root);
        return root;
    }
};

今日总结

二叉树章节今天就结束了,大总结可以参考:二叉树总结篇|代码随想录

我也要回广州了,正月初六顺顺顺,第一遍过二叉树其实自己现在能手撕出来的不多,还是需要多练练自己从看到题目,独立思考到解出代码的能力,在现在这个瞬息万变的时代,虽然现在我写的这些编程题用ai都能秒出,很多工作ai也可以有很大帮助,但作为计算机学生,只能努力提升个人能力,理解每种算法的细节,根本原理,以不变应万变。昨天还刷到xhs里面有人说以后大厂面试不会再考leecode题目了......哎,继续加油。

相关推荐
你好!蒋韦杰-(烟雨平生)1 小时前
Opengl模拟水面
c++·游戏·3d
想做功的洛伦兹力11 小时前
2026/2/22日打卡
数据结构·算法
不染尘.2 小时前
字符串哈希
开发语言·数据结构·c++·算法·哈希算法
今儿敲了吗2 小时前
25| 丢手绢
数据结构·c++·笔记·学习·算法
卷卷的小趴菜学编程2 小时前
项目篇----C++ AI大模型接入SDK->API获取与测试
c++·ai·api·apifox·deepseek
wostcdk2 小时前
归并排序 & 逆序对
数据结构·算法
weixin_477271692 小时前
第八正:治(马王堆帛书《老子》3)
算法·图搜索算法
wostcdk2 小时前
ST表 & RMQ问题
算法
陈天伟教授2 小时前
人工智能应用- 材料微观:07.SliceGAN 模型
人工智能·神经网络·算法·机器学习·推荐算法