1. 程式人生 > >迴圈佇列和樹的計算公式

迴圈佇列和樹的計算公式

2018/9/20 19:56:17

迴圈佇列的計算公式:

設front為隊首指標,rear為隊尾指標,m為佇列最大容量。

入隊: rear = (rear + 1) % m

出隊: front = (front + 1) % m

隊空: front = rear

隊滿: front = (rear + 1) % m

當前佇列中的元素數目: n = (rear - front + m) % m

--------------------------------------------------------------------------------------------------------

對於一個二叉樹,如下圖所示:

我們可以有下面的假設,設葉子節點個數為n0,度為1的節點個數為n1,度為2的節點個數為n2。

那麼就有:n0+n1+n2=n

又由於除了根節點以外,每一個結點都佔有一個邊,(邊的個數=點的個數-1)

那麼就有:n-1=2n2+n1

綜合上面的兩個公式得到:

葉子結點和二度結點數目關係:n0=n2+1

--------------------------------------------------------------------------------------------------------------------------

如果這是一個完全二叉樹,那麼一度結點的個數是有限的,要麼為0要麼為1。所以可以最後得到結點總數目和葉子結點的關係:

(1)當n1=0時,n=2n0-1所以n0=(n+1)/2。這裡的n為奇數。

(2)當n1=1時,n=2n0所以n0=n/2。這裡的n為偶數。

綜上所述:

對於完全二叉樹,葉子結點和結點總數的關係是:

一個具有n個節點的完全二叉樹,其葉子節點的個數n0為: (n+1)/2 向下取整。