乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ?LeetCode刷題實戰(zhàn)124:二叉樹中的最大路徑和

       程序IT圈 2021-01-16
      算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

      今天和大家聊的問題叫做 二叉樹中的最大路徑和,我們先來看題面:
      https:///problems/binary-tree-maximum-path-sum/

      Given a non-empty binary tree, find the maximum path sum.

      For this problem, a path is defined as any node sequence from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.

      題意



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

      本題中,路徑被定義為一條從樹中任意節(jié)點出發(fā),沿父節(jié)點-子節(jié)點連接,達到任意節(jié)點的序列。該路徑至少包含一個節(jié)點,且不一定經(jīng)過根節(jié)點。

      樣例

      解題


      思路總結(jié):

      • 邊界判斷

      • 遞歸找出左右子樹最大的gain,小于0就不選。

      • 取以當(dāng)前節(jié)點為根節(jié)點的最大值和root為根節(jié)點最大值為最大路徑和

      • 返回每個節(jié)點作為根節(jié)點的最大路徑作為子樹的最大路徑。

      class Solution:
          def maxPathSum(self, root: TreeNode) -> int:
              
              def max_gain(node):
                  nonlocal max_sum
                  if not node:return 0
                  left_max = max(max_gain(node.left), 0)
                  right_max = max(max_gain(node.right),0)
                  new_price = node.val + left_max + right_max
                  max_sum = max(max_sum, new_price)
                  return node.val + max(left_max, right_max)
              max_sum = float('-inf')
              max_gain(root)
              return max_sum



      好了,今天的文章就到這里,如果覺得有所收獲,請順手點個在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動力。

      上期推文:

      LeetCode1-120題匯總,希望對你有點幫助!
      LeetCode刷題實戰(zhàn)121:買賣股票的最佳時機
      LeetCode刷題實戰(zhàn)122:買賣股票的最佳時機 II
      LeetCode刷題實戰(zhàn)123:買賣股票的最佳時機 III

        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多