[英]Lowest Common Ancestor of a Binary Search Tree
我了解查找 BST 的 LCA 的迭代方法的算法。 但我不明白下面粗体字。 谁能给我解释一下?
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': while (root.val - p.val) * (root.val - q.val) > 0: root = (root.left, root.right)[p.val > root.val] return root
据我了解,您需要解释这一行。
root = (root.left, root.right)[p.val > root.val]
它创建具有两个元素的元组:root.left 和 root.right,它们的索引为 0 和 1。 p.val > root.val 是 boolean 表达式。 如果为假(对于 python,这是 0)它选择 root.left(例如元组中的第一个元素)。 如果为真(对于 python,这是 1)选择 root.right(例如元组中的第二个元素)。
这是因为
>>> False == 0
True
>>> True == 1
True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.