代码随想录算法训练营第二十天-二叉树-669. 修剪二叉搜索树

  • 对于递归的写法除了大写的服字,无话可说
  • 由于是修剪二叉树,所以会有明确的方向性
  • 当某一结点小于最小值,说明其左子树全部要修剪掉
  • 当某一结点大于最大值,说明其右子树全部要修剪掉
cpp 复制代码
#include <iostream>

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(): val(0), left(nullptr), right(nullptr) {}
    TreeNode(int v): val(v), left(nullptr), right(nullptr) {}
    TreeNode(int v, TreeNode* l, TreeNode* r): val(v), left(l), right(r) {}
};

class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if (root == nullptr)
            return nullptr;
        else if (root->val < low)
            return trimBST(root->right, low, high);
        else 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;
    }
};
int main()
{
    Solution s;
    return 0;
}
相关推荐
报错小能手23 分钟前
C++笔记——STL map
c++·笔记
思麟呀1 小时前
Linux的基础IO流
linux·运维·服务器·开发语言·c++
星释1 小时前
Rust 练习册 :Pythagorean Triplet与数学算法
开发语言·算法·rust
星释1 小时前
Rust 练习册 :Nth Prime与素数算法
开发语言·算法·rust
多喝开水少熬夜2 小时前
Trie树相关算法题java实现
java·开发语言·算法
QT 小鲜肉2 小时前
【QT/C++】Qt定时器QTimer类的实现方法详解(超详细)
开发语言·数据库·c++·笔记·qt·学习
WBluuue3 小时前
数据结构与算法:树上倍增与LCA
数据结构·c++·算法
bruk_spp3 小时前
牛客网华为在线编程题
算法
呆瑜nuage3 小时前
C++之红黑树
c++
亮剑20184 小时前
第2节:程序逻辑与控制流——让程序“思考”
开发语言·c++·人工智能