題目:

題目決議:
這個題目和之前我們做的稍微有一點不一樣,需要我們在函式里面再寫一個函式才能夠進行遞回,因為想要使用遞回那么我們一定需要寫出一個遞進關系的運算式,而這個表示只通過一個傳入引數root是不能夠完成的,需要有兩個傳入引數才能夠進行比較二叉樹的兩邊是否對稱,我們通過這個新的函式將傳入的一個引數更改為傳入兩個引數就好了,還有一種則是廣度優先搜索的方法來求解這道題,這兩種方法都需要掌握,都是非常重要的方法,這里先給出遞回解法,迭代的方法我以后再補充,下面是遞回的方法:
# 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: #這個函式只會回傳是否是對稱的啊!也就是bool值 #因此撰寫另外一個函式判斷左子樹和右子樹是否是鏡像就好了 return self.isMirror(root,root) def isMirror(self, p1, p2):
#假設傳入進來的兩棵樹都是空樹,則肯定對稱,則回傳true if not p1 and not p2: return True
#只有一個為空,另一個不為空的情況下輸出false if not p1 or not p2: #左右子樹都空的情況上面已經排除 return False return p1.val == p2.val and self.isMirror(p1.left, p2.right) and self.isMirror(p1.right, p2.left)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/144602.html
標籤:其他
