Pythonで最小共通祖先を実装する最も簡単な方法は何ですか? 親へのポインターを持つ各ノードで表されるツリーがあり、2 つのノードが与えられた場合に最初の共通の祖先を見つけられるようにしたいと考えています。いくつかのアイデアを思いついたが、どれも特に魅力的ではなかった
各ノードにそのベースのリストを含め、結合を実行するには、最長の共通プレフィックスを見つけてから最後の要素を取ります。残念ながら、最長の共通プレフィックスを実行する組み込みの方法を知らないため、これには手動のループが必要です。
各ノードにそのベースのセットを含め、セットの交差を実行し、最大の要素を取ります。しかし、これには独自の比較演算子を定義する必要があり、それが機能するかどうかさえわかりません。
私は何をすべきか?パフォーマンスよりもシンプルさを優先するものを探しているので、複雑な処理を必要とするソリューションは出ていません。
編集:組み込みの方法はありませんが、zipを使用して1行で最長の共通プレフィックスを実行できるため、それでもかなり簡単です。
common = [x for x in zip(*baselists) if len(set(x)) == 1][-1]