簡體   English   中英

如何證明一堆𝑛鍵是一個數組𝐴等價於平衡二叉樹

[英]how to prove A heap of 𝑛 keys is an array 𝐴 equivalent to balanced binary tree

我如何證明下面的句子? 一堆𝑛鍵是一個數組𝐴等價於平衡二叉樹(葉子的深度在護城河1處不同)。 深度為 Θ(log⁡𝑛 )

該聲明並不完全正確,因為:

  • "A heap of 𝑛 keys is an array 𝐴" :堆不一定使用數組來實現。 這應該改寫。

  • “平衡二叉樹 :這僅適用於二叉 有 d-ary 堆。

  • “等價”表示該語句在兩個方向上都有效,但不保證平衡的二叉樹對應於二叉堆。

我建議這樣的聲明:

𝑛 鍵的二叉堆——可以通過大小為 𝑛 的數組 𝐴 來實現——代表一棵平衡二叉樹,其葉子的深度最多相差 1,深度為 Θ(log⁡𝑛)。

這是一個真實的陳述,因為二叉堆根據定義是一棵完整的二叉樹,如Wikipedia中所述:

形狀屬性:二叉堆是一棵完全二叉樹 也就是說,除了最后一層(最深)之外,樹的所有層都被完全填滿,如果樹的最后一層不完整,則該層的節點從左到右被填滿。

這個屬性已經表明二叉堆是一棵二叉樹,它的葉子在底層,可能還有一些在它上面的層次。 這意味着葉子深度的最大差異為1。

給定一個帶有𝑛鍵的二叉堆,第一層(根)將有 1 個鍵,第二層將有 2 個鍵,第三層將有 4 個鍵,... 以此類推,每次加倍,直到所有鍵都分配完畢,所以最后一層可能有許多不是 2 的冪的節點。

如果我們按照層序對鍵進行編號,從 1 開始,那么第二層最左邊的節點將具有數字 2,第三層最左邊的節點將具有數字 4,......等等,每次2 的下一個冪,因此級別 𝑘(從零開始)的最左側節點的編號為 2 𝑘 底層最左邊的節點將有一個數字 2 𝑘 ,這樣 ⁡𝑛/2 < 2 𝑘 ≤ ⁡𝑛

因此,底層節點的深度為 𝑘,(給定上述 2 𝑘的范圍)為 O(log𝑛)。

請注意,二叉堆可以很好地表示為數組𝐴這一事實並不真正相關,因為完全二叉樹的屬性已經存在於二叉堆的定義中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM