# 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
from collections import deque
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
#迭代法,用双头队列做容器
#为空处理
if not root:
return True
que=deque()
que.append(root.left)
que.append(root.right)
#判断根节点的左右子树是否翻转
while que:
leftnode=que.popleft()
rightnode=que.popleft()
#若都为空,表示对称
if leftnode==None and rightnode==None:
continue
#若左右一个节点不为空,或都不为空但值不等,不对称
if not leftnode or not rightnode or leftnode.val != rightnode.val:
return False
#加入左节点左孩子
que.append(leftnode.left)
#右节点右孩子
que.append(rightnode.right)
#左节点右孩子
que.append(leftnode.right)
#右节点左孩子
que.append(rightnode.left)
return True