2

ヒープについて学習していますが、各ノードをどのように移動する必要があるのか​​ 理解できません。以下にツリーの例を示します。

          1
      /      \
     2        3
   /  \      /  \
  4    5    6    7
 / \   /
8   9 10  

それが私の木です。ノードに 10 を取得しようとしていますが、実行する手順がわかりません。まず木の根元を見ますか?私の試みは次のとおりです。

          1
      /      \
     2        3
   /  \      /  \
  4    5    6    7
 / \   /
8   9 10 


 -> Move ten up and the two down. 

          1      
      /      \
    10        3
   /  \      /  \
  4    5    6    7
 / \   /
8   9 2 

-> Move the 9 up 

         1      
      /      \
    10        3
   /  \      /  \
  9    5    6    7
 / \   /
8   4 2 

-> move the 7 up

          1      
      /      \
    10        7
   /  \      /  \
  9    5    6    3
 / \   /
8   4 2

-> Move the whole left side up and bring the 1 down.

         10      
      /      \
    9         7
   /  \      /  \
  8    5    6    3
 / \   /
1   4 2

これが最終的な結果ですが、順序付けられたツリーではないため、これは正しくないと感じています。誰かが私が間違った場所を理解するのを手伝ってくれますか?

4

1 に答える 1

2

ヒープは順序付き二分木ではありません。ヒープが保持する唯一の順序は、子ノードが親ノードより小さい (または等しい) ということです。ツリーの同じレベルにある子ノードは、相互に相対的に任意の順序にすることができます。

于 2013-11-05T10:01:42.630 に答える