トピック:
101.対称二分木
二分木が与えられたら、それが鏡面対称であるかどうかを確認します。
たとえば、二分木[1,2,2,3,4,4,3]は対称です。
ただし、次の[1,2,2、null、3、null、3]は鏡面対称ではありません。
問題解決のアイデア:
BFSはキューを使用し、多くの問題解決のBFSは4回ノードに配置されます。より直感的な方法は、2組のグループをキューに配置することです。
キュー内の左右の2つのノードを同時に取り出し、これら2つのノードの値が等しいかどうかを判断し、(left.left、right.right)、(left.right、 right.left)グループがキューに入れられます。
BFSアプローチでは、事前に別のノード値に遭遇して終了し、Falseを返す場合を除いて、すべてのノードをチェックして、返される結果がTrueであると判断する必要があります。
問題解決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/