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

/** * 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; } }
上一篇:2022 hnust 湖科大 javaweb课设 数据库课设 报告+源代码+流程图文件+课设指导书+附赠数据库课堂实验指导书


下一篇:【纯血鸿蒙】——自适应布局如何实现?