刷題系列 - Python判斷是否映象對稱二叉樹

張國平發表於2020-01-20

繼續刷題,判斷是否映象對稱二叉樹。

映象對稱二叉樹,顧名思義,以根節點為軸,左右節點和節點內容互為映象;如下圖所示。這裡要避免和完全二叉樹混淆。


這個我還是考慮了一段時間,遞迴和迭代都可以實現。遞迴的,如果一個節點值作為輸入很難實現,所以新建一個新方法recurse,輸入左右兩個節點,返回bool值。思路很簡單,如果輸入兩個節點都是空,可能是單個跟節點,返回True;如果一個有,另一個為空,返回False;如果左右兩個節點,如果節點值相等,這裡遞迴,把這兩個節點的子節點左右對比,並按照and 關聯,如果有一個下層對比False,則所有都是False。如果都為True,則層層返回True。


遞迴的核心點,就是定義傳入下一次遞迴輸入,和如何處理下一次遞迴的返回。

# 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 root== None:
            return True
        else:
            return recurse(root.left,root.right)
        
def recurse(leftNode,rightNode):
        if leftNode == None and rightNode == None:
            return True
        elif leftNode != None and rightNode != None:
            if leftNode.val ==rightNode.val:
                return recurse(leftNode.left,rightNode.right) and recurse(leftNode.right,rightNode.left)
            else:
                return False
        else:
            return False


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2674075/,如需轉載,請註明出處,否則將追究法律責任。

相關文章