题解 | #农场最大产奶牛群# java

农场最大产奶牛群

https://www.nowcoder.com/practice/16d827f124e14e05b988f3002e7cd651

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整型
     */
    int res = 0;

    public int maxMilkSum(TreeNode root) {
        if (root == null)
            return 0;
        dfs(root);
        return res;
    }

    private int dfs(TreeNode root) {
        if (root == null)
            return 0;
        int left = dfs(root.left);
        int right = dfs(root.right);
        res = Math.max(res, left + right + root.val);
        return Math.max(left, right) + root.val;
    }
}

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

这道题考察的知识点是二叉树的深度优先搜索(DFS)和递归。

代码的文字解释如下:

  • maxMilkSum 方法接收一个 TreeNode 类型的参数 root,返回一个整数值。
  • 首先创建一个变量 res,初始值为 0,用于存储计算得到的最大值。
  • 如果 root 为空,则直接返回 0。
  • 调用 dfs 方法进行深度优先搜索(DFS),初始时传入 root
  • 在 dfs 方法中,如果当前节点 root 为空,返回 0。
  • 分别递归遍历左子树和右子树,并将结果分别赋给 left 和 right
  • 计算当前节点的最大值,即 resleft + right + root.val 的最大值。
  • 返回 left 和 right 中较大的一个,并加上当前节点的值,作为上一层递归的结果。
全部评论

相关推荐

10-17 13:54
上海大学 运营
雾凇岛:这还说什么了,冲了兄弟们
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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