{100,6070,50,32,65} などのシーケンスはわかっていますが、それがヒープであるかどうかを判断するにはどうすればよいでしょうか?
回答: このシーケンスを配列型の二分木として扱います。ルート ノードを i とすると、左の部分木は 2*i、右の部分木は 2*i 1 になります。
ヒープは最大ヒープと最小ヒープに分かれます。
1. 最大ヒープ内のすべての親ノードは、左側のサブツリーと右側のサブツリーよりも大きくなります。たとえば、既知のシーケンスがヒープとして描画される場合:
つまり、既知のシーケンスは最大ヒープです。
2. 最小ヒープ内のすべての親ノードは、ヒープとして描画される {32,50,60,70,100,65} などの左のサブツリーと右のサブツリーよりも小さいです:
上記の 2 つの状況を満たすシーケンスはヒープです。
以上がヒープ順序を決定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。