1. 程式人生 > 其它 >力扣刷題筆記:101、對稱二叉樹(佇列queue,很容易理解的程式碼、完整題解程式碼及註釋)

力扣刷題筆記:101、對稱二叉樹(佇列queue,很容易理解的程式碼、完整題解程式碼及註釋)

技術標籤:刷題筆記leetcodepython

題目:

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/