本文為大家介紹怎樣判斷一個序列是不是堆(堆序列的排列方式),下面和小編一起看看詳細內(nèi)容吧。
把這個序列想象成一個數(shù)組型的二叉樹,二叉樹上端的父節(jié)點個數(shù)大于或小于下端左右子節(jié)點的個數(shù),那么這個序列可以是視為堆。
當且僅當滿足上述關(guān)系時,n 個元素的序列{k1,k2,ki,kn} 稱為堆。
堆是計算機科學中一種特殊類型數(shù)據(jù)結(jié)構(gòu)的總稱。我們通常把堆看成是一棵樹的數(shù)組對象。
堆分為最大堆和最小堆。兩者的區(qū)別在于節(jié)點的排序方式。在最大堆中,父節(jié)點的值大于每個子節(jié)點的值。在最小堆中,父節(jié)點的值小于每個子節(jié)點的值,這是堆的屬性,這個屬性對堆中的每個節(jié)點都成立。根據(jù)這個性質(zhì),我們可以理解,在最大堆中,最大值總是放在二叉樹的根節(jié)點,而對于最小堆,根節(jié)點的值就是二叉樹中的最小值。堆的特性特別有用,因此堆經(jīng)常被用作優(yōu)先級隊列,因為它可以快速訪問“最重要”的元素。
注意:最大或最小的元素放在堆的根節(jié)點,但其他節(jié)點的排序未知。唯一可以保證的是最小的元素是葉子節(jié)點,但不確定是哪一個。
好了,怎樣判斷一個序列是不是堆(堆序列的排列方式)的介紹到這里就結(jié)束了,想知道更多相關(guān)資料可以收藏我們的網(wǎng)站。