力扣刷題筆記:101、對稱二叉樹(佇列queue,很容易理解的程式碼、完整題解程式碼及註釋)
阿新 • • 發佈:2021-02-08
題目:
101、對稱二叉樹
給定一個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
題解思路:
BFS 使用一個佇列,很多題解中的 BFS 都是放入了四次節點,一種更直觀的做法是兩兩一組放入佇列中。
在佇列中同時取出兩個節點left, right,判斷這兩個節點的值是否相等,然後把他們的孩子中按照(left.left, right.right) 一組,(left.right, right.left)一組放入佇列中。
BFS做法需要把所有的節點都檢查完才能確定返回結果True,除非提前遇到不同的節點值而終止返回False。
題解python:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
queue = collections. deque()
queue.append((root, root))
while queue:
left, right = queue.popleft()
if not left and not right:
continue
if not left or not right:
return False
if left.val != right.val:
return False
queue.append((left.left, right.right))
queue.append((left.right, right.left))
# print(queue)
return True
作者:fuxuemingzhu
連結:https://leetcode-cn.com/problems/symmetric-tree/solution/bfs-dui-lie-tong-shi-bao-cun-bao-cun-yao-pan-duan-/
來源:力扣(LeetCode)https://leetcode-cn.com/problems/symmetric-tree/