多个布尔运算,例如(l和r)== None:

时间:2019-04-10 07:40:01

标签: python

我正在研究树木问题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

如何直观地解释它,这是优先级上的花招吗?

0 个答案:

没有答案