困難
給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例 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.該節點 左子樹路徑 ...