2016-05-27 5 views
0

ノードをバイナリヒープに挿入すると仮定して、挿入およびヒープ化後のヒープを表す配列のノードのインデックスを見つけるにはどうすればよいですか? は、私は(Oでこのアルゴリズムを見つける必要があるログ(ログ(N))。 ノードの位置を配列で検索する(バイナリヒープとして)

はあなたのすべてをありがとう。あなたは、バイナリヒープに挿入見れば

答えて

2

、新しいノードが最後に置かれ、

したがって、ヒープのサイズを知っているので、新しいノードがどのブランチに挿入されるかを知っています。ブランチサイズはlog(n)です。この位置から

このブランチに沿ったバイナリ検索だけで済むので、このブランチに属するすべてのノードを見つけることができます。 log(log(n))内の新しいノードのエース。

+0

よろしくお願いいたします。まずは、ありがとうございます。もう一つの質問があります。どのインデックスが一般的であるかを知る方法はありますか? – ChikChak

+0

いいえ、現在のヒープと挿入する値に依存しますが、位置を特定する方法はありません。 –

+0

もう一度、ありがとう! – ChikChak

関連する問題