二叉堆和堆的區(qū)別 堆跟二叉堆有什么區(qū)別?
堆跟二叉堆有什么區(qū)別?Stack是一個線性表,只能在表的一端插入和刪除。Queue是一個線性表,只能在表的一端插入,在另一端刪除。從數(shù)據(jù)結(jié)構(gòu)的角度來看,它們都是線性結(jié)構(gòu),即數(shù)據(jù)元素之間的關(guān)系是相同的。
堆跟二叉堆有什么區(qū)別?
Stack是一個線性表,只能在表的一端插入和刪除。Queue是一個線性表,只能在表的一端插入,在另一端刪除。從數(shù)據(jù)結(jié)構(gòu)的角度來看,它們都是線性結(jié)構(gòu),即數(shù)據(jù)元素之間的關(guān)系是相同的。但它們是完全不同的數(shù)據(jù)類型。除了它們的基本操作集不同之外,主要的區(qū)別在于插入和刪除操作的“限定性”。在計算機科學(xué)中,堆是一種特殊的樹型數(shù)據(jù)結(jié)構(gòu),每個節(jié)點都有一個值。堆的數(shù)據(jù)結(jié)構(gòu)一般為二進(jìn)制堆。heap的特點是根節(jié)點的值最?。ɑ蜃畲螅?jié)點的兩個子樹也是一個heap。
堆和二叉樹的區(qū)別?
在二進(jìn)制排序樹中,每個節(jié)點的值大于其左子樹中所有節(jié)點的值,小于其右子樹中所有節(jié)點的值。按中間順序遍歷二叉排序樹以獲得有序序列。因此,二叉排序樹是滿足節(jié)點之間一定順序關(guān)系的二叉樹;堆是一個完整的二叉樹,每個節(jié)點的值都大于或等于其左右子節(jié)點的值(這里的討論以大根堆為例),所以堆是一個完整的二叉樹,滿足節(jié)點之間的某種順序關(guān)系。具有n個節(jié)點的二叉排序樹的深度取決于給定集合的初始順序。在最佳情況下,深度是logn(表示以2為底的對數(shù)),在最壞情況下,深度是n。在有n個節(jié)點的堆中,深度是堆對應(yīng)的完整二叉樹的logn。在二叉排序樹中,節(jié)點的右子節(jié)點的值必須大于該節(jié)點的左子節(jié)點的值;但不一定在堆中。堆僅將節(jié)點的值限制為大于(或小于)其左、右子節(jié)點的值,但不限制左、右子節(jié)點之間的大小關(guān)系。在二叉排序樹中,最小值節(jié)點是最左邊的底部節(jié)點,其左指針為空;最大值節(jié)點是最右邊的底部節(jié)點,其右指針為空。在大型根堆中,最小節(jié)點位于葉節(jié)點,而最大節(jié)點位于堆的頂部(根節(jié)點)。二叉排序樹是為動態(tài)搜索而設(shè)計的一種數(shù)據(jù)結(jié)構(gòu)。面向搜索操作。在二叉排序樹中搜索節(jié)點的平均時間復(fù)雜度為O(logn);堆是為排序而設(shè)計的數(shù)據(jù)結(jié)構(gòu),不面向搜索操作。因此,在堆中搜索節(jié)點需要遍歷,其平均時間復(fù)雜度為O(logn))。
在二叉堆中,為什么一個節(jié)點的左孩子節(jié)點下標(biāo)為此節(jié)點下標(biāo)的兩倍?
二進(jìn)制堆是一個完整的二叉樹。序列號是從1的根節(jié)點計算出來的。通過繪制一個圖可以看出,所有的子節(jié)點都是父節(jié)點,通常是:poschild=2*posparent
堆是一個排序完全的二叉樹,其中任何非終端節(jié)點的數(shù)據(jù)值都不大于(或小于)其左、右子節(jié)點的值。最大堆和最小堆是二進(jìn)制堆的兩種形式。最大堆(大根堆):根節(jié)點的鍵值是所有堆節(jié)點中最大的。最小堆(small root heap):根節(jié)點的鍵值是所有堆節(jié)點中最小的。Max-min-heap結(jié)合了Max-heap和min-heap的優(yōu)點,這是它的名字來源。Max-min-heap是最大層和最小層交替出現(xiàn)的二叉樹,即最大層節(jié)點的子節(jié)點屬于最小層,最小層節(jié)點的子節(jié)點屬于最大層。以最大(?。庸?jié)點作為根節(jié)點的子樹具有最大(?。┒褜傩裕焊?jié)點的鍵值是子樹節(jié)點鍵值中最大(小)項。