0

これは最近のインタビューで私に尋ねられました。バイナリ ツリーは、次のスキーマのデータベースに格納されます

テーブル ツリー (int nodeId、int parentId、int データ)

これは自己参照テーブルです。ルートから特定のノードまでのパスにあるすべてのノードのデータを出力するクエリを作成するように依頼されました。1回のクエリでそれを行うことは可能ですか?

私が提供した解決策は、キーをnodeId、値をparentIdとしてすべての行をhashMapにロードし、マップを使用して特定のノードからルートへのパスを出力することでした。

バイナリ ツリーのノードの深さがわかっている場合は、ネストされたクエリを記述してこれを出力できます。ルートから深さ 2 にある nodeId='4' のノードまですべてのノードを出力するサンプル クエリは次のとおりです。 Tree n1 where nodeId in (select pId from Tree n2 where nodeId='4'); "

ネストされたクエリを使用せずにこれを行うことは可能ですか? もしそうなら、これを行うためにどのクエリを使用できますか?

4

0 に答える 0