目錄
一、題目內容
二、解題思路
三、**
給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,沿父節點-子節點連線,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例 1:輸入:[1,2,3]
1
/ \2 3
輸出:6
示例 2:後序遍歷,計算左右子樹的路徑和,如果存在小於0的數則不算在路徑內(加0),每次記錄一下根左右三個點的路徑和,然後返回父節點擊擇輸入:[-10,9,20,null,null,15,7]
-10
/ \9 20
/ \
15 7
輸出:42
左子樹或
右子樹的路徑和,這樣就可以記錄子樹選路徑的情況。
# definition for a binary tree node.
class treenode:
def __init__(self, x):
self.val = x
self.left = none
self.right = none
def __repr__(self):
return str(self.val)
class solution:
def maxpathsum(self, root: treenode) -> int:
self.result = root.val
def dfs(root):
if not root:
return 0
left = max(dfs(root.left), 0) # less than 0, no pass
right = max(dfs(root.right), 0) # less than 0, no pass
self.result = max(root.val + left + right, self.result)
return root.val + max(left, right) # choose left or right
dfs(root)
return self.result
if __name__ == '__main__':
# a = treenode(-10)
# a.left = treenode(9)
# a.right = treenode(20)
# a.right.left = treenode(15)
# a.right.right = treenode(7)
a = treenode(1)
a.left = treenode(-2)
a.right = treenode(3)
s = solution()
ans = s.maxpathsum(a)
print(ans)
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.該節點 左子樹路徑 ...