在 Python 中实现最低共同祖先的最简单方法是什么?我有一棵树,它由每个节点表示,每个节点都有一个指向其父节点的指针,我希望能够找到给定两个节点的第一个共同祖先。我提出了几个想法,但没有一个特别吸引人
让每个节点包含其基数列表,并执行连接,找到最长的公共前缀,然后取最后一个元素。不幸的是,我不知道有任何内置方法可以做最长的公共前缀,所以这需要手动循环。
让每个节点包含一组它的基并执行一组交集,并取最大元素。但这需要定义自定义比较运算符,我什至不确定它是否会起作用。
我该怎么办?我正在寻找有利于简单而不是性能的东西,因此需要复杂处理的解决方案已经出现。
编辑:我发现虽然没有内置方式,但您可以使用 zip 在一行中执行最长的公共前缀,所以它仍然相当简单。
common = [x for x in zip(*baselists) if len(set(x)) == 1][-1]