zoukankan      html  css  js  c++  java
  • [LeetCode] 124. 二叉树中的最大路径和

    题目链接 : https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/

    题目描述:

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

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

    示例:

    示例 1:

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

    示例 2:

    输入: [-10,9,20,null,null,15,7]
    
       -10
       / 
      9  20
        /  
       15   7
    
    输出: 42
    

    思路:

    这类题目, 都是求树的高度的延伸版

    直接看代码解释

    def maxPathSum(self, root: TreeNode) -> int:
            self.res = float("-inf")
            def helper(root):
                if not root: return 0
                # 右边最大值
                left = helper(root.left)
                # 左边最大值
                right = helper(root.right)
                # 和全局变量比较
                self.res = max(left + right + root.val, self.res)
                # >0 说明都能使路径变大
                return max(0, max(left,  right) + root.val)
            helper(root)
            return self.res 
    

    java

    class Solution {
        int res = Integer.MIN_VALUE;
    
        public int maxPathSum(TreeNode root) {
            helper(root);
            return res;
        }
    
        private int helper(TreeNode root) {
            if (root == null) return 0;
            int left = helper(root.left);
            int right = helper(root.right);
            res = Math.max(left + right + root.val, res);
            return Math.max(0, Math.max(left, right) + root.val);
        }
    }
    
  • 相关阅读:
    分布式事务--AT+TCC
    Java基础面试题
    JVM问题
    集合问题
    线程问题
    微服务面试题
    【入职准备】安装STS以及整合maven
    事务----四大特性
    html小知识--创建表单
    通过css润色html表格
  • 原文地址:https://www.cnblogs.com/powercai/p/11172070.html
Copyright © 2011-2022 走看看