题解 | #农场最大产奶牛群#
农场最大产奶牛群
https://www.nowcoder.com/practice/16d827f124e14e05b988f3002e7cd651
考察知识点:二叉树、后序遍历、递归
解题思路:这道题主要考察的是二叉树的后序遍历。具体解法为:使用全局变量`max`存储最终求得总和的结果,然后再采用后续遍历依次求得左右子树的最大单支总和,左单支总和 + 右单支总和 + 当前节点值就是当前节点所能够拿到的最大总和,然后与`max`比较并更新`max`,最后遍历结束,`max`也就变成了整棵树的最大总和
本题解所用语言:java
具体代码如下:
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 max = 0;
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型
*/
public int maxMilkSum (TreeNode root) {
// write code here
maxSum(root);
return max;
}
public int maxSum(TreeNode root) {
if (root == null) {
return 0;
}
int left = maxSum(root.left);
int right = maxSum(root.right);
int sum = left + right + root.val;
if (sum > max) {
max = sum;
}
return Math.max(left, right) + root.val;
}
}
