题解 | #农场牛的最佳观赏区间# java

农场牛的最佳观赏区间

https://www.nowcoder.com/practice/7b49f5ad9814424d8c41de44f671d59e

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param low int整型
     * @param high int整型
     * @return int整型
     */
    public int rangeSumBST (TreeNode root, int low, int high) {
        // write code here
        if (root == null) return 0;
        if (root.val < low) return rangeSumBST(root.right, low, high);
        if (root.val > high) return rangeSumBST(root.left, low, high);
        return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right,
                low, high);
    }
}

该代码使用的编程语言是Java。

该题表达的知识点是二叉搜索树的范围和。给定一个二叉搜索树的根节点 root,以及一个范围 [low, high],需要计算出二叉搜索树中所有节点值在该范围内的节点值的和。

代码的文字解释如下:

  1. 定义一个名为 TreeNode 的结构体,表示二叉树的节点,它包含一个整型的 val 值,以及左子树和右子树的指针;
  2. 创建一个名为 Solution 的类;
  3. 在该类中,包含了一个名为 rangeSumBST 的公共方法;
  4. rangeSumBST 方法的参数包括一个 TreeNode 类型的根节点 root,以及两个整型 low 和 high,分别表示范围的最小值和最大值;
  5. 首先判断根节点是否为空,如果为空,则返回 0;
  6. 如果根节点的值小于 low,则递归调用 rangeSumBST 方法,传入右子树的根节点,并返回结果;
  7. 如果根节点的值大于 high,则递归调用 rangeSumBST 方法,传入左子树的根节点,并返回结果;
  8. 如果根节点的值在范围内,将根节点的值加上递归调用 rangeSumBST 方法计算左子树和右子树的和,然后返回结果;
  9. 这样,通过调用 rangeSumBST 方法,可以获取二叉搜索树中指定范围内节点值的和。
全部评论

相关推荐

07-15 18:09
门头沟学院 Java
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司9个岗位
点赞 评论 收藏
分享
07-14 12:22
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务