leetcode 二叉樹中的最大路徑和

2021-10-12 07:04:14 字數 937 閱讀 7273

求當前節點t包含的最大路徑,那麼就是 以左節點l開始的最大路徑和lmax,和以右節點開始的最大路徑和rmax,這三個部分構成的最大路徑和有(t,t+lmax,t+rmax,t+rmax+lmax) 這四種情況和當前最大路徑和max做對比。

當求以左節點為開始的最大路徑時,左節點必須包含在路徑內,並且左節點的左右子樹必須選擇其中乙個或者都不選擇,也就是說(l,l+l.lmax,l+l.rmax)這三種路徑返回最大的給t。

class

solution

(object):

def__init__

(self)

: self.

max=

float

("-inf"

)def

maxpathsum

(self, root)

:"""

:type root: treenode

:rtype: int

"""self.dfs(root)

return self.

maxdef

dfs(self,root):if

not root:

return

0 res = root.val

left = self.dfs(root.left)

right = self.dfs(root.right)

self.

max=

max(self.

max,res+left,res+right,res+right+left,res)

return

max(res,res+left,res+right)

LeetCode 二叉樹最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 解題關鍵 明白二叉樹基本操作。definition for a bin...

二叉樹最大深度 leetcode

這個題目開始要想是用遞迴,但是遞迴的形式,沒有想對。直接判斷left right 比較麻煩,不如在遞迴呼叫的時候判斷root是否為空。public class solution int led maxdepth root.left int rid maxdepth root.right return...

Leetcode二叉樹最大深度

二叉樹的最大深度,即為二叉樹的層數,開始的想法是遍歷左子樹和遍歷右子樹,返回記錄的最大值。這樣明顯是有漏洞的,如果最右的右子樹有左孩子或者左子樹有右孩子,結果就是不正確的。使用遞迴的方法,整樹的最大深度為左孩子樹的最大深度或者右孩子樹的最大深度。遞迴結束的條件是,當乙個結點的左右子樹都為空時,返回1...