美文网首页
15 - Hard - 二叉树中的最大路径和

15 - Hard - 二叉树中的最大路径和

作者: 1f872d1e3817 | 来源:发表于2018-06-27 10:51 被阅读0次

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

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

    示例 1:

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

    示例 2:

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

    每个最大路径,都以某个节点为根,再加上左右孩子为根的路径长(若小于0则为0,也就是说小于0的子树被忽略掉),同时再设置一个_max记录最长路径,小于0的父节点虽然被计算但不会被记录

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def maxPathSum(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            def maxend(node):
                if not node:
                    return 0
                left = maxend(node.left)
                right = maxend(node.right)
                self.max = max(self.max, left + node.val + right)
                return max(node.val + max(left, right), 0)
            self.max = None
            maxend(root)
            return self.max
    

    相关文章

      网友评论

          本文标题:15 - Hard - 二叉树中的最大路径和

          本文链接:https://www.haomeiwen.com/subject/gchbyftx.html