欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

對稱的二叉樹 python leetcode101

系統(tǒng) 1665 0

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

例如,二叉樹 [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

            
          

用遞歸和隊列實現(xiàn)

            
              
                #遞歸
              
              
                # Definition for a binary tree node.
              
              
                # class TreeNode:
              
              
                #     def __init__(self, x):
              
              
                #         self.val = x
              
              
                #         self.left = None
              
              
                #         self.right = None
              
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                isSymmetric
              
              
                (
              
              self
              
                ,
              
               root
              
                :
              
               TreeNode
              
                )
              
              
                -
              
              
                >
              
              
                bool
              
              
                :
              
              
                if
              
              
                not
              
               root
              
                :
              
              
                # 先判斷根節(jié)點是否為空
              
              
                return
              
              
                True
              
              
                return
              
               self
              
                .
              
              isMirror
              
                (
              
              root
              
                .
              
              left
              
                ,
              
               root
              
                .
              
              right
              
                )
              
              
                # 分成左子樹和右子樹判斷
              
              
                def
              
              
                isMirror
              
              
                (
              
              self
              
                ,
              
               p
              
                ,
              
               q
              
                )
              
              
                :
              
              
                # 判斷兩棵樹是否是鏡像樹
              
              
                if
              
              
                not
              
               p 
              
                and
              
              
                not
              
               q
              
                :
              
              
                # 根節(jié)點都為空,是
              
              
                return
              
              
                True
              
              
                if
              
              
                not
              
               p 
              
                or
              
              
                not
              
               q
              
                :
              
              
                # 其中有一棵為空,不是
              
              
                return
              
              
                False
              
              
        l 
              
                =
              
               self
              
                .
              
              isMirror
              
                (
              
              p
              
                .
              
              left
              
                ,
              
               q
              
                .
              
              right
              
                )
              
              
                # p的左子樹和q的右子樹是否相同
              
              
        r 
              
                =
              
               self
              
                .
              
              isMirror
              
                (
              
              p
              
                .
              
              right
              
                ,
              
               q
              
                .
              
              left
              
                )
              
              
                # p的右子樹和q的左子樹是否相同
              
              
                return
              
               p
              
                .
              
              val 
              
                ==
              
               q
              
                .
              
              val 
              
                and
              
               l 
              
                and
              
               r            
              
                # 值相等,并且p的左=q的右,p的右=q的左
              
              
                # 方法二 隊列實現(xiàn)
              
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                isSymmetric
              
              
                (
              
              self
              
                ,
              
               root
              
                )
              
              
                :
              
              
                """
        隊列
        :param root:
        :return:
        """
              
              
                if
              
              
                not
              
               root
              
                :
              
              
                return
              
              
                True
              
              

        node_queue 
              
                =
              
              
                [
              
              root
              
                .
              
              left
              
                ,
              
               root
              
                .
              
              right
              
                ]
              
              
                # 在空隊列中加入左子樹和右子樹
              
              
                while
              
               node_queue
              
                :
              
              
            left 
              
                =
              
               node_queue
              
                .
              
              pop
              
                (
              
              
                0
              
              
                )
              
              
                # 依次彈出兩個元素
              
              
            right 
              
                =
              
               node_queue
              
                .
              
              pop
              
                (
              
              
                0
              
              
                )
              
              
                if
              
              
                not
              
               right 
              
                and
              
              
                not
              
               left
              
                :
              
              
                # 如果均為空,繼續(xù)下一個循環(huán)
              
              
                continue
              
              
                if
              
              
                not
              
               right 
              
                or
              
              
                not
              
               left
              
                :
              
              
                # 如果只有一個為空,返回False
              
              
                return
              
              
                False
              
              
                if
              
               left
              
                .
              
              val 
              
                !=
              
               right
              
                .
              
              val
              
                :
              
              
                # 都非空,再判斷值是否相等
              
              
                return
              
              
                False
              
              

            node_queue
              
                .
              
              append
              
                (
              
              left
              
                .
              
              left
              
                )
              
              
                # 將兩個左右子樹的左右子樹逆序加入隊列
              
              
            node_queue
              
                .
              
              append
              
                (
              
              right
              
                .
              
              right
              
                )
              
              
            node_queue
              
                .
              
              append
              
                (
              
              left
              
                .
              
              right
              
                )
              
              
            node_queue
              
                .
              
              append
              
                (
              
              right
              
                .
              
              left
              
                )
              
              
                #node_queue.extend([left.left, right.right, left.right, right.left])   或者用這一句話寫
              
              
                return
              
              
                True
              
            
          

更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本又黄又粗暴的gif动态图含羞 | 欧美综合成人网 | 深夜福利一区二区 | 性夜影院爽黄a爽在线看香蕉 | 欧美区日韩区 | 色悠久久久久综合网伊人男男 | 国产一级毛片高清视频 | 国产1区2区3区| 久久天天躁夜夜躁狠狠 | 福利在线网 | 99热久久这里只有精品首页 | 亚洲美女黄色 | 在线观看国产 | 国产伦精品一区二区 | 狠狠添| 欧美激情精品久久久久久 | www.4hu影院| 久久婷婷色一区二区三区 | 亚洲精品乱码久久久久久花季 | 亚洲精品午夜一区二区 | 麻豆精品国产自产在线 | 国产成人免费 | 毛片在线看片 | 亚洲一区二区三区在线免费观看 | 日韩亚洲欧美视频 | 香蕉视频在线看 | α片毛片 | 91视频丝瓜 | 男女做性无遮挡免费视频 | 国产91精品久久久久久久 | 日韩欧美视频一区二区在线观看 | 日韩av片在线免费观看 | 免费观看呢日本天堂视频 | 亚洲五月综合网色九月色 | 男女下面一进一出无遮挡着 | www.99re| 国产精品欧美日韩 | 国内精品久久久久激情影院 | 久草网站在线 | 日本视频一区在线观看免费 | 91国内精品久久久久免费影院 |