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

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

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

      劍指offer-17、樹的?結構

      題?描述

      輸?兩棵?叉樹A , B ,判斷B 是不是A 的?結構。(ps:我們約定空樹不是任意?個樹的?結構)

      假如給定A 為{8,8,7,9,2,#,#,#,#,4,7} , B 為{8,9,2} , 2 個樹的結構如下,可以看出B是A 的?結構:

      思路及解答

      雙重遞歸法(標準解法)

      使用兩個遞歸函數:

      1. isSubStructure:遍歷樹A的每個節點,尋找與樹B根節點值相同的節點
      2. recur:從匹配的節點開始,遞歸比較兩棵樹的對應節點是否相同
      public class Solution {
          public boolean isSubStructure(TreeNode A, TreeNode B) {
              // 空樹不是任何樹的子結構
              if (A == null || B == null) return false;
              
              // 三種情況滿足一種即可:
              // 1. B是以A為根的子結構
              // 2. B是A左子樹的子結構
              // 3. B是A右子樹的子結構
              return hasSubtree(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);
          }
          
          // 判斷B是否是A的子結構(從當前節點開始)
          private boolean hasSubtree(TreeNode A, TreeNode B) {
              // B已經遍歷完,說明匹配成功
              if (B == null) return true;
              // A遍歷完但B還有節點,或節點值不匹配
              if (A == null || A.val != B.val) return false;
              // 遞歸比較左右子樹
              return hasSubtree(A.left, B.left) && hasSubtree(A.right, B.right);
          }
      }
      
      • 時間復雜度?:O(mn),m和n分別是樹A和樹B的節點數
      • ?空間復雜度?:O(m),遞歸棧的深度最大為樹A的高度

      迭代+遞歸混合法

      1. 使用迭代法(棧或隊列)遍歷樹A
      2. 當找到與樹B根節點值相同的節點時,切換到遞歸比較
      3. 結合了迭代和遞歸的優點
      public class Solution {
          public boolean isSubStructure(TreeNode A, TreeNode B) {
              if (A == null || B == null) return false;
              
              Stack<TreeNode> stack = new Stack<>();
              stack.push(A);
              
              while (!stack.isEmpty()) {
                  TreeNode node = stack.pop();
                  // 找到匹配的根節點,開始遞歸比較
                  if (node.val == B.val && compareTrees(node, B)) {
                      return true;
                  }
                  if (node.right != null) stack.push(node.right);
                  if (node.left != null) stack.push(node.left);
              }
              
              return false;
          }
          
          private boolean compareTrees(TreeNode A, TreeNode B) {
              if (B == null) return true;
              if (A == null || A.val != B.val) return false;
              return compareTrees(A.left, B.left) && compareTrees(A.right, B.right);
          }
      }
      
      • 時間復雜度?:O(mn)
      • ?空間復雜度?:O(m),棧的空間消耗
      posted @ 2025-07-30 09:00  程序員Seven  閱讀(73)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费视频爱爱太爽了| yw尤物av无码国产在线观看| 性色av无码久久一区二区三区| 东方四虎av在线观看| av鲁丝一区鲁丝二区鲁丝三区 | 一二三四中文字幕日韩乱码| 五月天丁香婷婷亚洲欧洲国产 | 亚洲色大成网站WWW国产| 国产不卡一区二区四区| 女同在线观看亚洲国产精品| 午夜福利日本一区二区无码| 久久久久青草线综合超碰| 免费人成视频在线播放| 午夜福利国产盗摄久久性| 国产精品无遮挡一区二区| 国产成人啪精品视频免费APP | 精品一区二区中文字幕| 欧美人成精品网站播放| 久久精品国产成人午夜福利| 久热爱精品视频线路一| 西西人体44www大胆无码| 韩国午夜理伦三级| 蜜臀av一区二区三区日韩| 亚洲欧洲av一区二区久久| 免费国产一级 片内射老| 免费无码一区无码东京热| 国产高清精品在线一区二区| 亚洲精品爆乳一区二区H| 久久国产免费观看精品3| 精品国产乱码久久久久久浪潮| 国产精品三级中文字幕| 蜜臀av午夜精品福利| 91精品国产午夜福利| 国产一区二区三区色成人| 国产午夜无码视频在线观看| 极品粉嫩小泬无遮挡20p| 国内少妇偷人精品免费| 国产一区二区精品久久岳| 狠狠色噜噜狠狠狠狠2021| 国精品91人妻无码一区二区三区| 国产乱色国产精品免费视频 |