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

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

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

      對稱二叉樹

      題目

      給定一個二叉樹,檢查它是否是鏡像對稱的。

      例如,二叉樹[1,2,2,3,4,4,3]是對稱的。

          1
         / \
        2   2
       / \ / \
      3  4 4  3
      

      但是下面這個[1,2,2,null,3,null,3]則不是鏡像對稱的:

          1
         / \
        2   2
         \   \
         3    3
      

      解法

      解法一: 遞歸。

      /**
       * 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 boolean isSymmetric(TreeNode root) {
              if(root == null){
                  return true;
              }
              TreeNode left = root.left;
              TreeNode right = root.right;
              return isSymmetricForLeftAndRight(left,right);
          }
      
          // 判斷left和right是否對稱
          public boolean isSymmetricForLeftAndRight(TreeNode left,TreeNode right){
              if(left == null || right == null){
                  if(left != null || right != null){
                      return false;
                  } else {
                      return true;
                  }
              }
              // 判斷值是否相等
              int leftVal = left.val;
              int rightVal = right.val;
              if(leftVal != rightVal){
                  return false;
              }
      
              // 遞歸調用,判斷左節點的左節點與右節點的右節點是否對稱
              TreeNode leftNextLeft = left.left;
              TreeNode rightNextRight = right.right;
              if(!isSymmetricForLeftAndRight(leftNextLeft,rightNextRight)){
                  return false;
              }
      
              // 遞歸調用,判斷左節點的右節點與右節點的左節點是否對稱
              TreeNode leftNextRight = left.right;
              TreeNode rightNextLeft = right.left;
              if(!isSymmetricForLeftAndRight(leftNextRight,rightNextLeft)){
                  return false;
              }
      
              return true;
          }
      }
      

      解法二: 迭代。

      /**
       * 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 boolean isSymmetric(TreeNode root) {
              if(root == null){
                  return true;
              }
              // 創建隊列,特點是先進先出。
              Queue<TreeNode> queue = new LinkedList<>();
              queue.offer(root.left);
              queue.offer(root.right);
      
              while(!queue.isEmpty()){
                  TreeNode left = queue.poll();
                  TreeNode right = queue.poll();
                  if(left == null || right == null){
                      if(left != null || right != null){
                          return false;
                      } else {
                          continue;
                      }
                  }
                  int leftVal = left.val;
                  int rightVal = right.val;
                  if(leftVal != rightVal){
                      return false;
                  }
                  
                  // 再把left和right子節點放進去,注意順序
                  // 順序一定是left的左節點和right的右節點,然后是left的右節點和right的左節點
                  queue.offer(left.left);
                  queue.offer(right.right);
                  queue.offer(left.right);
                  queue.offer(right.left);
              }
      
              return true;
          }
      }
      

      總結

      本篇文章講解了算法題目的思路和解法,代碼和筆記由于純手打,難免會有紕漏,如果發現錯誤的地方,請第一時間告訴我,這將是我進步的一個很重要的環節。以后會定期更新算法題目以及各種開發知識點,如果您覺得寫得不錯,不妨點個關注,謝謝。

      posted @ 2021-02-27 07:11  唯愛編程  閱讀(67)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 龙里县| 色综合国产一区二区三区| 亚洲真人无码永久在线| 韩国精品一区二区三区| 无码人妻丝袜在线视频| 国产亚洲久久久久久久| 亚洲天堂av免费在线看| 亚洲av在线观看| 盈江县| 国产成人无码免费看片软件| 资源新版在线天堂偷自拍| 中文日韩在线一区二区| 人妻蜜臀久久av不卡| 在线a亚洲老鸭窝天堂| 亚洲人妻精品一区二区| 激情欧美日韩一区二区| 内射极品少妇xxxxxhd| 成人国产亚洲精品一区二| 黄频在线播放观看免费| 久久精品国产中文字幕| 四虎永久免费高清视频| h无码精品3d动漫在线观看| 亚洲av无在线播放中文| 午夜在线观看成人av| 国产午夜三级一区二区三| 乱中年女人伦av三区| 国产精品一区二区蜜臀av| 最近免费中文字幕mv在线视频3| 国产超碰无码最新上传| 夜夜添无码一区二区三区| 国产精品午夜福利资源| 文中字幕一区二区三区视频播放 | 蜜臀av久久国产午夜福利软件| 日韩V欧美V中文在线| 国产亚洲精品久久久久蜜臀| 自慰无码一区二区三区| 免费av深夜在线观看| 精品少妇后入一区二区三区 | 国产毛片精品一区二区色| 无码伊人久久大杳蕉中文无码| 亚洲国产午夜精品福利|