如何分析python中的對稱二叉樹

如何分析python中的對稱二叉樹,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比道外網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式道外網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋道外地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

對稱二叉樹

 

題目

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

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

來源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/symmetric-tree/submissions/

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def isSymmetric(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
   

錯誤代碼

判斷二叉樹是否對稱,先看看下面代碼是否正確,它實現(xiàn)的什么功能?

首先看遞歸基,分三種情況:

  1. 沒有根,就是空樹,返回True
  2. 沒有左右子樹,返回True
  3. 左右子節(jié)點     val不相等,返回False

遞歸方程如下,判斷左、右子樹都對稱。

self.isSymmetric(root.left) and self.isSymmetric(root.right)
 
    def isSymmetric(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        if not root:
            return True 
        if not root.left and not root.right:
            return True 
        return root.left == root.right and self.isSymmetric(root.left) and self.isSymmetric(root.right)
 

以上代碼認為下面的二叉樹才是對稱的:

如何分析python中的對稱二叉樹  

這與題目要求的對稱二叉樹明顯不同,這樣才是真的對稱二叉樹:

如何分析python中的對稱二叉樹  
 

正確代碼

錯誤代碼錯誤的原因在于遞歸方程有問題。請看下圖:

如何分析python中的對稱二叉樹  

因此,得到正確的遞歸方程:

sub(left.left,right.right) and sub(left.right,right.left)
 

完整代碼:

class Solution(object):
    def isSymmetric(self, root):
        if not root:
            return True 
        def sub(left,right):
            # 沒有左和右,返回True
            if not left and not right:
                return True
            # 沒有左或沒有右,返回False
            if not left or not right:
                return False
            return left.val == right.val and sub(left.left,right.right) and sub(left.right,right.left)
        return sub(root.left,root.right)

關(guān)于如何分析python中的對稱二叉樹問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

本文名稱:如何分析python中的對稱二叉樹
地址分享:http://muchs.cn/article32/ipgepc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、Google、靜態(tài)網(wǎng)站、虛擬主機、移動網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營