*[Lintcode]Binary Tree Maximum Path Sum

    xiaoxiao2025-05-04  8

    Given a binary tree, find the maximum path sum.

    The path may start and end at any node in the tree.

    For example: Given the below binary tree,

    1 / \ 2 3

    Return 6.

    先明确一下路径你给的定义:从根节点到树中某节点经过的分支。一共四种情况:

    左子树的路径加上当前节点

    右子树的路径加上当前节点

    左右子树的路径加上当前节点(计算sum时需要考虑。计算path时,不考虑此情况。)

    只有当前节点

    public class Solution { /** * @param root: The root of binary tree. * @return: An integer. */ static int max = Integer.MIN_VALUE; //负值在路径上时没有关系,因为计算的是sum public int maxPathSum(TreeNode root) { helper(root); return max; } int helper(TreeNode root) { if(root == null) return 0; int res = root.val; int left = 0; int right = 0; if(root.left != null) { left = helper(root.left); if(left > 0) res += left; } if(root.right != null) { right = helper(root.right); if(right > 0) res += right; } if(res > max) max = res; return Math.max(root.val, Math.max(root.val + left, root.val + right)); } }

    转载请注明原文地址: https://ju.6miu.com/read-1298734.html
    最新回复(0)