背景
给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称
题解
# 递归方法
class Solution:
def isSymmetric(self , root ):
# write code here
if not root:
return True
return self.is_mirror(root.left, root.right)
def is_mirror(self,left_node,right_node):
if not left_node and not right_node:
return True
if not left_node or not right_node:
return False
is_left_mirror = self.is_mirror(left_node.left, right_node.right)
is_right_mirror = self.is_mirror(left_node.right, right_node.left)
return left_node.val == right_node.val and is_left_mirror and is_right_mirror
class Solution:
def isSymmetric(self , root ):
if not root:
return True
from collections import deque
q = deque([root.left,root.right])
while q:
left_node = q.popleft()
right_node = q.popleft()
if not left_node and not right_node:
continue
if not left_node or not right_node:
return False
if left_node.val != right_node.val:
return False
q.extend([left_node.left,right_node.right,left_node.right,right_node.left])
return True