時々私はこのようなインタビューの質問に出くわします:「ツリー内の任意の2つのノードの共通の親を見つけてください」。グーグルやアマゾンなどでもLCAの質問をしていることに気づきました。
ウィキペディアが言うように、LCAは、与えられたノードからルートへのパスの交差によって見つけることができ、O(H)を取ります。ここで、Hは木の高さです。さらに、O(N)でツリーを処理し、O(1)でLCAクエリに応答するより高度なアルゴリズムがあります。
このLCAの質問をする候補者について、インタビュアーが正確に何を知りたいのだろうか。パス交差の最初のアルゴリズムは些細なようです。彼らは候補者が前処理アルゴリズムを覚えていることを期待していますか?彼らは候補者がこれらのアルゴリズムとデータ構造をその場で発明することを期待していますか?