LintCode 475 [Binary Tree Maximum Path Sum II]

原题

已知一颗二叉树,找到从根节点到任意节点的最大路径和

已知下面一颗二叉树

  1
 / \
2   3

返回4. (1->3)

解题思路

  • Divide and Conquer
  • 借助一个helper函数,从根节点向下分裂,每一层返回左右儿子中的最大值与当前节点的值,层层递归

完整代码

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        this.val = val
        this.left, this.right = None, None
"""
class Solution:
    """
    @param root the root of binary tree.
    @return an integer
    """
    def maxPathSum2(self, root):
        return self.helper(root)
        
    def helper(self, root):
        if not root:
            return 0
            
        left = self.helper(root.left)
        right = self.helper(root.right)
        
        return max(left, right) + root.val

推荐阅读更多精彩内容

  • 参考两篇其他bolg总结的二叉树:https://github.com/xy7313/lintcode/blob/...
    暗黑破坏球嘿哈阅读 1,758评论 0 1
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 3,963评论 1 30
  • 原题 给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的...
    Jason_Yuan阅读 1,771评论 0 1
  • 原题 给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值的路径。一个有效的路径,指的是从根节点到叶节点的...
    Jason_Yuan阅读 943评论 0 0
  • 94. Binary Tree Inorder Traversal 中序 inorder:左节点->根节点->右节...
    Morphiaaa阅读 219评论 0 0
  • 亲爱的晗,你好! 一切看起来是那么的美好。 还记得五年前机缘巧合地参加《21天爱上写作训练营》时,你那努力的样子吗...
    易水晗天阅读 211评论 10 8
  • 正如幻如醉,虚无飘渺; 心中的构想,美好愿景。 少年的时候,渴望长大的自由; 青年的时候,渴望成熟的稳定; 中年的...
    huangxia阅读 267评论 0 0