<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      動態規劃(17)、337. 打家劫舍III

      Posted on 2023-03-21 10:45  板磚ArvinSun  閱讀(42)  評論(0)    收藏  舉報

      題目連接:337. 打家劫舍 III - 力扣(LeetCode)

       

       

      題目分析:

        二叉樹的后續遍歷,dp[root] 表示 root節點的最大收益

              dp[root] = max(dp[root.left] + dp[root.right], root.val + dp[root.left.left] + dp[root.left.right] + dp[root.right.left] + dp[root.right.right])

      我們可以在原始的二叉樹上進行記錄,因為題目中沒有說不允許改變二叉樹的內容;

      我們使用二叉樹的后續遍歷,當前節點的最大收益為取當前節點,和不取當前節點的最大值,不取當前節點的話那就是兩個子數的根節點

      的值之和,如果取當前節點的話,由于不能相鄰的節點一起偷,所以這時候其收益為當前節點的數值加上左節點的左右節點的數值和右節

      點的左右節點數值之和(如果他們存在的話)

       

      代碼實現如下:

        

      /**
       * Definition for a binary tree node.
       * public class TreeNode {
       *     int val;
       *     TreeNode left;
       *     TreeNode right;
       *     TreeNode() {}
       *     TreeNode(int val) { this.val = val; }
       *     TreeNode(int val, TreeNode left, TreeNode right) {
       *         this.val = val;
       *         this.left = left;
       *         this.right = right;
       *     }
       * }
       */
      class Solution {
          public int rob(TreeNode root) {
              // 二叉樹的后續遍歷,dp[root] 表示 root節點的最大收益
              // dp[root] = max(dp[root.left] + dp[root.right], 
                  // root.val + dp[root.left.left] + dp[root.left.right] + dp[root.right.left] + dp[root.right.right])

              dfs(root);

              return root.val;
          }


          public void dfs(TreeNode root) {
              if (root == null) {
                  return;
              }

              dfs(root.left);
              dfs(root.right);

              root.val = Math.max(
                  (root.left == null ? 0:root.left.val) + 
                  (root.right == null? 0:root.right.val), 
                  root.val + 
                  (root.left == null? 0: (root.left.left == null ? 0: root.left.left.val)) +
                  (root.left == null? 0: (root.left.right == null ? 0: root.left.right.val)) + 
                  (root.right == null? 0: (root.right.left == null ? 0: root.right.left.val)) +
                  (root.right == null? 0: (root.right.right == null ? 0: root.right.right.val)) 
              );

          }
      }
       
      復雜度分析:時間復雜度 O(n)
                           空間復雜度:O(n)
      遞歸實現的本質也是系統幫我們建立了棧結構,而系統棧需要記住每個節點的值,所以空間復雜度仍為O(n)。

       

      主站蜘蛛池模板: 亚洲一区二区日韩综合久久 | 午夜性刺激在线观看| 亚洲精品日韩中文字幕| 亚洲国产精品无码av| 少妇高潮激情一区二区三| 在线中文字幕国产精品| 亚洲av区一区二区三区| 亚洲精品一区二区妖精| 国产破外女出血视频| 一本大道久久香蕉成人网| 国产成人一区二区三区视频免费| 国产精品中文字幕免费| а∨天堂一区中文字幕| 亚洲日韩性欧美中文字幕| 少妇又爽又刺激视频| 成人亚洲欧美一区二区三区| 亚洲国产精品乱码一区二区| 国产日韩入口一区二区| 国产精品毛片一区二区三| 91国在线啪精品一区| 成人免费无码大片A毛片抽搐色欲 成人啪精品视频网站午夜 | 99久久久无码国产麻豆| 国语精品一区二区三区| 亚洲av永久无码精品网站| 国产播放91色在线观看| 国产亚洲精品第一综合麻豆| 曲阜市| 精品视频在线观看免费观看| 国产91精品调教在线播放| 国产精品一品二区三四区| 亚洲免费视频一区二区三区| 国产女人看国产在线女人| 日韩精品无遮挡在线观看| 亚洲国产精品综合久久网络| 国内视频偷拍久久伊人网| 免费AV片在线观看网址| 亚洲全乱码精品一区二区| 国产一码二码三码区别| 欧美一区二区三区成人久久片| 亚洲色成人网站www永久四虎| 中文有码字幕日本第一页|