繁体   English   中英

二叉搜索树的最低共同祖先

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM