为了账号安全,请及时绑定邮箱和手机立即绑定

python中if语句的问题?

python中if语句的问题?

小怪兽爱吃肉 2019-02-26 06:15:36
我在做leetcode的一道题,给出一个搜索树。给出两个节点,寻找离它们最近的共同的父亲节点。这道题目很容易,我是这样写的 """ def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode :type p: TreeNode :type q: TreeNode :rtype: TreeNode """ while root: if root.val > p.val and root.val > q.val: root = root.left if root.val < p.val and root.val < q.val: root = root.right else: return root """但是没有通过,因为我使用的是if...if ...else...后来我尝试着改成if...elif...else...就很顺利通过了,我很疑惑在这个问题上两种写法应该结果是一样的阿?我哪里想错了呢?
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在 root.val > p.val 且 root.val > q.val时, 第一个if虽然执行了, 但root值变了, 但第二个if仍会比较, 第二个if或else 一定会执行, 最终结果会不要样.

可以这样改的(加一个return):

     if root.val > p.val and root.val > q.val:
         root = root.left #此时root已不是原来的root, 接下的比较是新的root值
         continue  
     if root.val < p.val and root.val < q.val:
         root = root.right
     else:
        return root
查看完整回答
反对 回复 2019-03-01
?
BIG阳

TA贡献1859条经验 获得超6个赞

if if else这种结构 和 if elseif else逻辑上有着本质区别啊。当第一个if满足的情况下,第一种写法可能会执行到else直接return 第二种则进入第二次循环,继续走逻辑。

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 550 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信