经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
Leetcode 124. 二叉树中的最大路径和
来源:cnblogs  作者:Gmxbb  时间:2018/9/27 16:30:46  对本文有异议

题目链接

https://leetcode.com/problems/binary-tree-maximum-path-sum/description/

题目描述

给定一个非空二叉树,返回其最大路径和。

本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。

示例 1:

  1. 输入: [1,2,3]
  2. 1
  3. / 2 3
  4. 输出: 6

示例 2:

  1. 输入: [-10,9,20,null,null,15,7]
  2. -10
  3. / 9 20
  4. / 15 7
  5. 输出: 42

题解

计算路径之和,并取最大值。因为是计算路径之和,所以在计算的时候和0比较,只要大于0,路径总和就会增长。如果计算的路径之和小于0,则舍去该路径。

代码

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. int max = Integer.MIN_VALUE;
  12. public int maxPathSum(TreeNode root) {
  13. maxPathDown(root);
  14. return max;
  15. }
  16. public int maxPathDown(TreeNode root) {
  17. if (root == null) { return 0; }
  18. int leftSum = Math.max(0, maxPathDown(root.left));
  19. int rightSum = Math.max(0, maxPathDown(root.right));
  20. max = Math.max(max, root.val + leftSum + rightSum);
  21. return root.val + Math.max(leftSum, rightSum);
  22. }
  23. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号