資料結構與演算法(24) 堆習題

2021-08-01 07:54:05 字數 568 閱讀 5855

題目:請說明有n個元素的堆的高度為logn

解答:堆是完全二叉樹。除了底層外,其他所有層都是滿的。

因此堆至少有2^h個元素,最多有2^(h+1)-1個元素,即2^h <= n <= 2^(h+1)-1

這表明h <= logn <= (h+1);由於h為整數,所以h=logn

題目:給定乙個最大堆,查詢最小元素

思路:

在最大堆中,最小元素只可能是葉子節點。

因為最後乙個節點(x)的雙親節點((x-1)/2)的下乙個節點為第乙個葉子節點((x-1)/2+1)

其中x = size - 1

/**

* 題目:給定乙個最大堆,查詢最小元素

*@param heap 最大堆

*@return 堆中最小元素

*/public

intfindmininmaxheap(heap heap)

}return min;

}

共勉:你多學一樣本事,就少說一句求人的話。

資料結構與演算法 堆結構

1 本質 一顆特殊的樹。2 特性 3 分類 對於每乙個節點的值都大於等於子節點的值的情況,該堆被稱為大頂堆。對於每乙個節點的值都小於等於子節點的值的情況,該堆被稱為小頂堆。4 儲存方式 對於完全二叉樹而言,陣列儲存方式是最節省記憶體的。5 插入節點的時間複雜度 將節點插入到靠左的底層作為新的葉子節點...

資料結構與演算法 堆

堆 完全二叉樹,高度為o lgn 基本操作至多和樹的高度成正比,構建堆的時間複雜度是o n 堆是一顆完全二叉樹,假設有n個節點,樹高h log2 n 證明方法如下 1 假設根節點的高度為0,葉子節點高度為h,每層包含元素個數為2 x,x 從0 到h。2 構建堆的過程是自下而上,對於每層非葉子節點需要...

資料結構與演算法 堆

在 演算法設計技巧與分析 這本書的第四章,介紹了堆。於是按照上面的偽 實現了一下。資料結構定義maxheap.hpp如下,1 ifndef max heap hpp 2 define max heap hpp 34 include 5using std vector 67 class maxheap...