# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxPathSum(self, root: Optional[TreeNode]) -> int:
def maxpath(root):
# 葉子結點下面的空節點直接返回0
if not root:
return 0
# 左邊的最大路徑和右邊的最大路徑
# 如果有一邊的路徑是負數,那就丟掉這邊的路徑
left = max(maxpath(root.left), 0)
right = max(maxpath(root.right), 0)
# 更新以當前節點為拐點的路徑
# 如果所有節點都是負數,會這在裡保留最大的負數
self.res = max(self.res, root.val + left + right)
# 向上返回當前節點和較大的一個側邊
return root.val + max(left, right)
self.res = -float("inf")
maxpath(root)
return self.res
[Python手撕]二叉樹中的最大路徑和
相關文章
- LeetCode 124. 二叉樹中的最大路徑和 | PythonLeetCode二叉樹Python
- 387,二叉樹中的最大路徑和二叉樹
- 124. 二叉樹中的最大路徑和二叉樹
- 每日一道演算法題--leetcode 124--二叉樹中的最大路徑和--python演算法LeetCode二叉樹Python
- [Python手撕]不同的二叉搜尋樹Python
- [Python手撕]判斷平衡二叉樹Python二叉樹
- [Python手撕]判斷二叉搜尋樹Python
- 二叉樹路徑總和二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 【資料結構與演算法】手撕平衡二叉樹資料結構演算法二叉樹
- [Python手撕]網格中的最短路徑(可以有k次破牆的機會)Python
- 手撕AVL樹(C++)C++
- 【資料結構與演算法】手撕二叉查詢樹資料結構演算法
- [Python手撕]最大子陣列和Python陣列
- 【LeetCode擊敗99%+】二叉樹路徑總和LeetCode二叉樹
- 霍夫曼樹(最優二叉樹)的實現二叉樹
- [Python手撕]LFUPython
- [Python手撕]LRUPython
- 二叉樹路徑查詢二叉樹
- Python演算法和資料結構:在二叉樹中找到和為sum的所有路徑Python演算法資料結構二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 【模板題】 543. 二叉樹的直徑二叉樹
- [Python手撕]接雨水Python
- 二叉樹的插入和搜尋–python實現二叉樹Python
- [Python手撕]兩個升序陣列的中位數Python陣列
- 重建二叉樹[by Python]二叉樹Python
- 平衡樹和二叉樹的區別二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- [Python手撕]公交路線Python
- [Python手撕]完全平方數Python
- [Python手撕]爬樓梯Python
- 二叉搜尋樹和二叉樹的最近公共祖先二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 樹和二叉樹簡介二叉樹
- LeetCode第 543 題:二叉樹的直徑(C++)LeetCode二叉樹C++
- 刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求Python二叉樹
- java實現二叉樹的Node節點定義手撕8種遍歷(一遍過)Java二叉樹