我正在研究树木问题Symmetric Tree - LeetCode
给出一棵二叉树,检查它是否是其自身的镜像(即,围绕其中心对称)。
例如,此二叉树
[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
注意: 如果您可以递归和迭代地解决它,则可以加分。
阅读以下解决方案
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def isSym(l,r):
if l==None and r==None:
return True
elif (l and r ) ==None:
return False
if l.val == r.val:
return isSym(l.left,r.right) and isSym(l.right,r.left)
else:
return False
if not root:
return True
if root:
return isSym(root.left,root.right)
我知道elif (l and r ) ==None:
是l == None or r == Nne
,但此表达是反直觉的
In [5]: (3 or 4) == 4
Out[5]: False
In [6]: (3 and 4) == 4
Out[6]: True
如何直观地解释它,这是优先级上的花招吗?