ホームページ >よくある問題 >ヒープ順序を決定する方法

ヒープ順序を決定する方法

藏色散人
藏色散人オリジナル
2019-06-13 11:27:4412526ブラウズ

ヒープ順序を決定する方法

{100,6070,50,32,65} などのシーケンスはわかっていますが、それがヒープであるかどうかを判断するにはどうすればよいでしょうか?

回答: このシーケンスを配列型の二分木として扱います。ルート ノードを i とすると、左の部分木は 2*i、右の部分木は 2*i 1 になります。

ヒープは最大ヒープと最小ヒープに分かれます。

1. 最大ヒープ内のすべての親ノードは、左側のサブツリーと右側のサブツリーよりも大きくなります。たとえば、既知のシーケンスがヒープとして描画される場合:

ヒープ順序を決定する方法

つまり、既知のシーケンスは最大ヒープです。

2. 最小ヒープ内のすべての親ノードは、ヒープとして描画される {32,50,60,70,100,65} などの左のサブツリーと右のサブツリーよりも小さいです:

ヒープ順序を決定する方法

上記の 2 つの状況を満たすシーケンスはヒープです。

以上がヒープ順序を決定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。