2016-07-15 13 views
0

フィボナッチヒープについて質問したいと思います。私はこのシナリオがある場合 :今、我々はBを削除フィボナッチヒープのdequeuemin

A 
|\ 
B C 
    | 
    D 

:次に

A 
| 
B 

を、我々は2つのノードCとDを追加

A 
| 
C 
| 
D 

今、私たちはEとFを追加します。

私はそれがそのような木を作成するのを見た:

E 
|\ 
F A 
    | 
    C 
    | 
    D 

しかしEとFがツリーに接続されている理由はわかりません。私が読んだところでは、同じランク(例えば、1つのノードのツリーと1つのノードの別のツリー)のツリーを接続しますが、間違っていますか?

ありがとうございました。

答えて

0

ノードCとDを最初のフィボナッチヒープに追加すると、作成したツリーは終了しません。代わりに、あなたはこのヒープを持っていると思います:

A C D 
    | 
    B 

は、フィボナッチヒープを遅延木のトップレベルのリストに、各新しく追加された値を追加し、削除のみで物事を合体することを忘れないでください。あなたはBを削除した場合、あなたはこのように、トップレベルにそれを促進したい:あなたはその後、B削除したい

A B C D 

:今

A C D 

を、あなたは、ルートリストをスキャンしたいです同じ注文の木を合体させる。

A D 
    | 
    C 

この時点で、1は正確にありますので、それ以上の合体は、起こりません:あなたはこのように、一緒にAとCを合体よ、あなたは順序A、C、Dの最初のノードをスキャンするとしましょう各注文の木。

あなたはEとFに追加する場合、あなたはこのように、トップレベルでそれらを置くところ:

A D E F 
    | 
    C 

そうです、あなたは正しい、それらのノードはに追加されますべきではありません木。

関連する問題