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

农场最大产奶牛群

https://www.nowcoder.com/practice/16d827f124e14e05b988f3002e7cd651?tpId=354&tqId=10591611&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj

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 {
    int res = 0;
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return int整型
     */
    public int maxMilkSum (TreeNode root) {
        // write code here
        if (root == null) return 0;
        dfs(root);
        return res;
    }

    public 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;
    }


}

知识点:

  1. 二叉树的遍历:本题需要进行二叉树的遍历,其中涉及到深度优先搜索(DFS)。
  2. 递归:使用递归来实现树的遍历过程和求解最大产奶量总和。
  3. 二叉树的数据结构:树节点的表示,可能包括树的节点类的定义。

题目解答方法:

  1. 类与对象:代码定义了一个TreeNode结构体来表示二叉树的节点,包含一个整数值以及左右子节点的指针。定义了一个Solution类来实现解决方案。
  2. 构造函数:代码使用了构造函数初始化TreeNode结构体中的成员变量。
  3. 方法的定义和参数传递:代码实现了一个maxMilkSum方法,接收一个二叉树的节点指针作为参数,并返回一个整数值。
  4. 递归的使用:通过递归遍历二叉树的所有节点,并计算每个节点的数值之和。
  5. 返回值的使用:将计算得到的数值之和作为结果返回给调用方。
  6. 代码注释:提供了方法的说明、参数的说明以及代码逻辑的解释,使得代码易于理解和使用。
全部评论

相关推荐

点赞 评论 收藏
分享
想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务