无聊的刷题笔记

对称的二叉树

剑指Offer 28 LeetCode 101

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

1

/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

1

/ \
2 2
\ \
3 3

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

限制:

0 <= 节点个数 <= 1000

# 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:
if not root:
return True
queue = [[root], []]
num = 0
while len(queue[num]) != 0 or len(queue[1-num]) != 0:
level = []
num = 1-num
while len(queue[num]) != 0:
node = queue[num].pop(0)
if node:
level.append(node.val)
queue[1-num].append(node.left)
queue[1-num].append(node.right)
else:
level.append(None)
# print(level)
if len(level)%2 != 1:
for i in range(0, len(level)//2):
if level[i] != level[len(level)-i-1]:
return False


return True