leetcode-101

101. 对称二叉树

题目描述:

给定一个二叉树,检查它是否是镜像对称的。

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

1
2
3
4
5
    1
/ \
2 2
/ \ / \
3 4 4 3

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

1
2
3
4
5
  1
/ \
2 2
\ \
3 3

代码及题解:

思路:将同一层的节点值放入一个临时数组temp,NULL也要放进去,判断该数组是否左右对称,如果不对称返回False,到全部判断完都对称,则该二叉树为对称的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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
deque=[root]
res=[]
while deque:
deq_node=[]
tmp=[]
while deque:
que=deque.pop(0)
if que:
tmp.append(que.val)
deq_node.append(que.left)
deq_node.append(que.right)
else:
tmp.append(que)
lens=len(tmp)
for i in range(lens):
if (lens - i-1) >= i:
if tmp[i] != tmp[lens - 1-i]:
return False

deque.extend(deq_node)
res.append(tmp)
return True
hey!baby,站住,点它!