代码随想录——修建二叉搜素树(Leetcode669)

题目链接

递归

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode trimBST(TreeNode root, int low, int high) {
    	// 检查传入的 root 是否为 null。如果是,则说明树为空,直接返回 null。
        if(root == null){
            return null;
        }
        // 如果 root 的值小于范围下限 low,那么这个节点以及它的左子树中的所有节点都不在范围内。
        // 因此,递归地对右子树进行修剪(即删除小于 low 的节点),并返回修剪后的右子树的根节点。
        if(root.val < low){
            TreeNode right = trimBST(root.right, low, high);
            return right;
        }
        // 如果 root 的值大于范围上限 high,那么这个节点以及它的右子树中的所有节点都不在范围内。
        // 因此,递归地对左子树进行修剪(即删除大于 high 的节点),并返回修剪后的左子树的根节点。
        if(root.val > high){
            TreeNode left = trimBST(root.left, low, high);
            return left;
        }
        // 递归地对 root 的左右子节点进行修剪。即使 root 的值在范围内,它的子节点可能不在范围内,所以需要分别对左右子节点进行相同的修剪过程。
        root.left = trimBST(root.left, low, high);
        root.right = trimBST(root.right, low, high);
        // 最后,在完成所有必要的修剪后,返回 root 节点。
        return root;
    }
}
相关推荐
披着羊皮不是狼9 小时前
多用户博客系统搭建(1):表设计+登录注册接口
java·开发语言·springboot
WX-bisheyuange12 小时前
基于Spring Boot的教师个人成果管理系统的设计与实现
java·spring boot·后端
小安同学iter13 小时前
SQL50+Hot100系列(11.9)
算法·leetcode·职场和发展
炼金士13 小时前
基于多智能体技术的码头车辆最快行驶路径方案重构
算法·路径规划·集装箱码头
xunyan623413 小时前
面向对象(上)-封装性的引入
java·开发语言
脸大是真的好~14 小时前
黑马JAVAWeb-05 JDBC入门-预编译SQL-Mybatis入门-Mybatis日志输出-数据库连接池-增删改查-XML映射配置
java
还算善良_14 小时前
XML签名
xml·java·开发语言
梅梅绵绵冰14 小时前
xml方式实现AOP
xml·java·开发语言
小刘max15 小时前
最长递增子序列(LIS)详解:从 dp[i] 到 O(n²) 动态规划
算法·动态规划
桦说编程15 小时前
Guava 迭代器增强类介绍
java·后端·设计模式