二叉堆第一個非葉子結點的索引

在堆排序中,需要確定二叉堆第一個非葉子結點的索引。將大小爲 N 的二叉堆保存於數組(使用索引 0),其第一個非葉子結點的索引爲 [N/2]-1。

  • 完全二叉樹的葉子結點個數知對於大小爲 N 的完全二叉樹(二叉堆是特殊的完全二叉樹),其葉子結點總數爲 [(N+1)/2];
  • 設所求索引爲 x,則 N-1-x = [(N+1)/2],x = N-1-[(N+1)/2];
    • 當 N 爲奇數時,x = N-1-(N+1)/2 = (N-3)/2 = [N/2]-1;
    • 當 N 爲偶數時,x = N-1-N/2 = [N/2]-1。
  • 所以 x=[N/2]-1。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章