1. 程式人生 > >證明:含有n個結點的二叉連結串列中共有n+1個空鏈域

證明:含有n個結點的二叉連結串列中共有n+1個空鏈域

法一:
含有n個結點的二叉連結串列中,鏈域一共有2*n個(每個點有兩個鏈域)。
對於除了根結點以外的每個點都是有一個父親結點,所以一共有n-1個指標指向某個結點,

於是形成n-1個有內容的鏈域(減1即是父親結點)所以一共有2*n-(n-1)=n+1個鏈域沒有指向任何東西。

或者法二:

二叉樹中:結點數n=n1+n2+n0,(n0是度數為0的結點,也稱葉子結點;n1是度數為1的結點;n2是度數為2的結點)
設空鏈域個數為N,N=n1+2*n0,(因為度數為1的有一個空,度數為0的有兩個為空)
因為n0=n2+1,帶入得N=n1+n0+n2+1=n+1

解釋為什麼n0=n2+1(非空二叉樹上葉子結點數等於度數為2的結點數+1)

證明:設度數為0,1,2的結點個數分別為N0,N1,N2,結點總數為N=N0+N1+N2

再看二叉樹中的分支數,除了根節點外,其餘結點都有一個分支進入,設B為分支總數,則N=B+1

由於這些分支是由度數為1或者2的結點射出來的,所有又有B=1*N1+2*N2

於是得:N0+N1+N2=(1*N1+2*N2)+1

則:N0=N2+1