完全二叉樹的葉子結點個數

大小爲 N 的完全二叉樹的葉子結點個數爲 N-[N/2]。

令 Sy(N) 表示大小爲 N 的完全二叉樹的葉子結點個數,要證該命題,即證 Sy(N)=N-[N/2]。

大小爲 2 的完全二叉樹的葉子結點個數 Sy(2)=1,N-[N/2]=2-[2/2]=1,命題成立。另不難知道大小爲 0 或 1 的完全二叉樹滿足命題。

假設命題在 N=M 時成立,即大小爲 M 的完全二叉樹的葉子結點個數 Sy(N)=M-[M/2],那麼當 N=M+1 時,若:

  1. M 爲偶數(度爲 1 的結點個數爲 1),那麼大小爲 M 的完全二叉樹的最後一個結點沒有兄弟結點,則大小爲 M+1 的完全二叉樹的葉子結點個數爲大小爲 M 的完全二叉樹的葉子結點個數加一,即 Sy(M+1)=Sy(M)+1=M-[M/2]+1,而 M 爲偶數,故 [M/2]=[(M+1)/2] 進而 M-[M/2]+1=M+1-[(M+1)/2],故命題在 N=M+1 時成立;

  2. M 爲奇數(度爲 1 的結點個數爲 0),那麼大小爲 M 的完全二叉樹的最後一個結點有兄弟結點,則大小爲 M+1 的完全二叉樹的葉子結點個數與大小爲 M 的完全二叉樹的葉子結點個數相等,即 Sy(M+1)=Sy(M)=M-[M/2],而 M 爲奇數,故 [(M+1)/2]=[M/2]+1 進而 M-[M/2]=M+1-[(M+1)/2],故命題在 N=M+1 時成立。

另:

  • 當 N 爲偶數時,N-[N/2]=N-N/2=N/2=[(N+1)/2];

  • 當 N 爲奇數時 N-[N/2]=N+1-[(N+1)/2]=N+1-(N+1)/2=(N+1)/2=[(N+1)/2]。

故原命題也可寫成:大小爲 N 的完全二叉樹的葉子結點個數爲 [(N+1)/2]。


另一種方法:

二叉樹的度指該節點引出的邊數(節點下面的邊),也即節點的子節點樹。那麼二叉樹有 3 種度:

  • n0:度爲 0,即爲葉子節點數量。
  • n1:度爲 1,即爲只有左子樹或者右子樹的節點數量,對於完全二叉樹,只可能存在一種情況,節點數爲奇數時有一個節點只有一個左子樹,所以 n1 = 0 or 1。
  • n2:度爲 2,即有左右節點的節點數量。

由二叉樹的性質有 n0 = n2 + 1

證明:

  • 由於 N = n0 + n1 + n2,而 n0 = n2 + 1,所以 N = 2n0 + n1 - 1,n0=(N+1-n1)/2
  • 對於完全二叉樹,如果 N 爲奇數,說明不存在只有左子節點的節點,n1 = 0, n0 = (N+1)/2;如果 N 爲偶數,說明存在 1 個只有左子節點的節點,n1 = 1, n0 = N/2。可以合併爲 n0 = [(N+1)/2]。

ref:完全二叉樹的葉子節點數完全二叉樹葉子節點的個數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章