leetcode 124 二叉樹中的最大路徑和

2021-10-07 18:29:34 字數 1451 閱讀 4347

困難

給定乙個非空二叉樹,返回其最大路徑和。

本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。

示例 1:

輸入: [1,2,3]

1/ \

2 3

輸出: 6

示例 2:

輸入: [-10,9,20,null,null,15,7]

-10/ \

9  20

/  \

15   7

輸出: 42

對於乙個節點來說,最大路徑和有4種情況

獲取父節點的路徑最大值時

其子節點只能採取前三種路徑方式,即不能同時出現左和右子樹

表現在遞迴函式中,其返回值為前三種方式的最大值

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

__init__

(self)

: self.result =

-100000

defmaxpathsum

(self, root: treenode)

->

int:

self.maxvalue(root)

return self.result

defmaxvalue

(self, root):if

not root:

return

0

left = self.maxvalue(root.left)

right = self.maxvalue(root.right)

# 四種不同的路徑方案

value1 = root.val

value2 = root.val + left

value3 = root.val + right

value4 = root.val + left + right

self.result =

max(

max(

[value1, value2, value3, value4]

), self.result)

# 去除第四種情況求得最大值

return

max(

[value1, value2, value3]

)

LeetCode 124 二叉樹中的最大路徑和

給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3 輸出 6示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42本題與 ...

Leetcode 124 二叉樹中的最大路徑和

題目 給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3輸出 6 示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42 ...

leetcode124 二叉樹中的最大路徑和

參考 思路參考 參考 class solution return the max value ended at root node inthelp treenode root 分析1給定乙個非空節點,最終路徑經過這個節點有4種情況 1.只有該節點本身 左右子樹的路徑都是負數 2.該節點 左子樹路徑 ...