124. Binary Tree Maximum Path Sum Leetcode Python

来源:互联网 发布:oracle连接mysql详解 编辑:程序博客网 时间:2024/06/05 05:22
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.

这个问题可以用递归的方法做分别找出左子树,右子树的最大值,再加起来。

This problem can be solved by using traversal. we need to find left and right max then, sum them up.

# Definition for a  binary tree node# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    # @param root, a tree node    # @return an integer    def findmax(self,root):        sum=root.val        lmax=0        rmax=0                if root.left:            lmax=self.findmax(root.left)            if lmax>0:                sum+=lmax                if root.right:            rmax=self.findmax(root.right)            if rmax>0:                sum+=rmax                        if self.max<sum:            self.max=sum        return max(root.val,max(root.val+lmax,root.val+rmax))    def maxPathSum(self, root):        self.max=-1000000        self.findmax(root)        return self.max                



0 0
原创粉丝点击