# 深度优先搜索
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
if not root: # 空树
return True
def DFS(left, right):
if not (left or right): # 左右子树,都为空
return True
if not (left and right): # 左右子树,一边为空
return False
if left.val != right.val:
return False
return DFS(left.left, right.right) and DFS(left.right, right.left)
return DFS(root.left, root.right)
第五行和第七行我在想and和or是不是弄反了
还有对left和right有点疑问
它之前的表达是没错的,就像事件A=“今天会下雨” ,事件B=“明天会下雨”,虽然A or B表示今天或明天下雨即今明两天至少1天下雨。
如果加个not即 not (A or B) 就表示“今明两天至少1天下雨”的反面事件-------也就是今明两天都不下雨。可以理解成not (A or B)=(not A) and (not B)
所以它原来的not (left or right)=(not left) and (not right) 即左空且右空,即左右都空,它原来的注释正确。