繼續刷題,判斷是否鏡像對稱二叉樹。
鏡像對稱二叉樹,顧名思義,以根節點為軸,左右節點和節點內容互為鏡像;如下圖所示。這里要避免和完全二叉樹混淆。
這個我還是考慮了一段時間,遞歸和迭代都可以實現。遞歸的,如果一個節點值作為輸入很難實現,所以新建一個新方法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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。