我在做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...
就很顺利通过了,我很疑惑在这个问题上两种写法应该结果是一样的阿?我哪里想错了呢?
在 root.val > p.val 且 root.val > q.val时, 第一个if虽然执行了, 但root值变了, 但第二个if仍会比较, 第二个if或else 一定会执行, 最终结果会不要样.
可以这样改的(加一个return):