完全二叉樹最小深度 最小堆

2021-10-11 15:47:00 字數 932 閱讀 2762

乙個深度為k,節點個數為2^k-1的二叉樹為滿二叉樹,即一棵樹深度為k,沒有空位。

一棵深度為k有n個節點的二叉樹,對樹中節點按從上至下、從左至右的順序進行編號,如果編號為i(1<=i<=n)的節點與滿二叉樹中編號為i的節點的二叉樹中位置相同,則這棵樹為完全二叉樹。滿二叉樹是特殊的完全二叉樹。

最小堆是一種經過排序的完全二叉樹,其中任意非終端節點數值均不大於其左子節點和右子節點的值。

如果一棵二叉樹滿足最小堆的要求,那麼,堆頂(根節點)也就是整個序列的最小元素。如果從廣度優先的方式從根節點開始遍歷,可以構成序列。反過來,可以推演出序列構成二叉樹的公式為:

1) 倒序遍歷數列,因為下標在size/2之後的節點都是葉子結點,所以可以從size/2-1位置開始倒序遍歷,減少比較次數。

2) 對二叉樹中的元素挨個進行沉降處理,沉降過程為:把遍歷到的節點與左右子節點中的最小值比對,如果比最小值要大,那麼和孩子節點交換資料,反之則不作處理,繼續倒序遍歷。

3) 沉降後的節點,再次沉降,直到葉子節點。

package
priorityqueue是乙個基於優先順序的無界佇列,優先順序佇列的元素按照其自然順序進行排序或者根據構造佇列時提供的comparator進行排序。其儲存結構為陣列,隨著不斷向優先順序佇列新增元素,其容量會自動擴容。

二叉樹最小深度

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。遞迴,若為空樹返回0 若左右子樹都為空,則返回 1 若左子樹為空,則返回右子樹的最小深度 1 若右子樹為空,則返回左子樹的最小深度 1 若左右子樹均不為空,則取左 右子樹最小深度的較小值,1 definition for a binary tr...

二叉樹最大 最小深度

二叉樹求最大,最小深度是二叉樹很基本的問題,基本上就是簡單的遞迴問題!首先明確一下二叉樹深度的定義 從根節點到葉子節點的深度 二叉樹的節點無外乎三種狀態 1.左右子樹皆存在 2.為葉子節點,左右子樹皆為null 3.另外一種就是乙個子樹為null,另乙個非空。二叉樹其實就是遞迴遍歷的思想,首先想遞迴...

二叉樹的最小深度

題目 給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根節點到最近葉子節點的距離。樣例給出一棵如下的二叉樹 1 2 3 4 5 這個二叉樹的最小深度為 2 思路 開始以為和求最大深度似的乙隻去深度最小,後來想想不對。要處理節點的左子樹是空或者右字樹是空的情況,而且每次處理的方式相同,提示我運用遞迴...