题解 | #牛群最小体重差# java

牛群最小体重差

https://www.nowcoder.com/practice/e96bd1aad52a468d9bff3271783349c1

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类
     * @return int整型
     */
    List<Integer> ans = new ArrayList<>();

    public int getMinimumDifference(TreeNode root) {
        inorder(root);
        int diff = Integer.MAX_VALUE;
        for (int i = 0; i < ans.size() - 1; i++) {
            int currDiff = ans.get(i + 1) - ans.get(i);
            if (currDiff < diff) {
                diff = currDiff;
            }
        }
        return diff;
    }

    private void inorder(TreeNode root) {
        if (root == null) {
            return;
        }
        inorder(root.left);
        ans.add(root.val);
        inorder(root.right);
    }
}

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

题目考察的是二叉树的中序遍历和求解最小差值的问题。

代码的文字解释如下:

  • 定义了一个TreeNode结构体,其中包含一个整型变量val,以及左右子节点leftright
  • 然后定义了一个Solution类,其中有一个成员变量ans,用于保存中序遍历的结果。
  • getMinimumDifference方法中,首先调用inorder方法进行中序遍历,并传入根节点作为参数。
  • inorder方法中,首先判断当前节点是否为空。如果为空,则直接返回。
  • 递归调用inorder方法分别处理当前节点的左子节点和右子节点。
  • 在递归回溯时,将当前节点的值加入ans列表中。
  • 遍历ans列表,计算相邻两个元素的差值,并找到最小的差值。
  • 将最小差值返回作为结果。
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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