ツリーが与えられた場合、「a」から「b」へのパスで「k」番目のノードを見つける必要があります。つまり、ノード「a」からノード「b」へのパスの「k 番目」の位置にあるノードを見つける必要があります。私は最低共通祖先および/または重軽分解の行で考えていましたが、それがそれを行う方法であるかどうかはわかりません。正しい方向へのガイダンスをいただければ幸いです。
詳細:
- ツリーは二分木ではありません。これは、n-1 個のエッジ、n 個の頂点を持ち、サイクルを持たない無向グラフです。ちょうどあなたの通常の木
- ツリーには、1 から n までの番号が付けられた頂点があります。これらの頂点の n-1 ペアを接続する n-1 個の無向辺があります
- 「a」と「b」は、ツリー内で 1 から n までの番号が付けられた任意の 2 つの頂点です。「a」から「b」へのパスで「k」番目のノードを見つけます。'k' の値が <= 'a' から 'b' へのパス内のノード数であることが保証されています
クエリの数が多いため、すべてのクエリ (「a」から「b」までの k 番目のノード) に適用される BFS はオプションではありません。