爲什麼n個節點的二叉樹是卡特蘭數

剛剛接觸卡特蘭數的時候,對這個結論很蒙,因爲左右括號、火車進站很好理解,結果是個2*n的序列,與卡特蘭數的證明可以直接對應。但是對於二叉樹,我卻很難想到怎麼構造成2*n個數的數列。

可以把二叉樹轉換成完全二叉樹進行理解。

對於n個節點的二叉樹,我們把這n個都當作父親節點,一定可以補充(n+1)個葉子節點,使之成爲一棵(2n+1)個節點的完全二叉樹。我們把原來的二叉樹稱作父親樹,即全是父親節點的樹。

一棵父親樹一定與一棵完全二叉樹一一對應。

 

(圖片來自https://blog.csdn.net/Dashi_Lu/article/details/90109542) 

證明:

對於一棵完全二叉樹,分爲葉子節點和父親節點。

首先,一棵父親樹到完全樹加葉子節點只有一種方式,不會出現一顆父親樹對應多種完全樹,所以這是一個映射。

任意一棵完全二叉樹,刪除所有葉子節點都是一顆父親樹。所以父親樹到完全二叉樹是滿射。

對於兩個不同的父親樹,添加葉子後的完全二叉樹一定不同。所以父親樹到完全二叉樹是單射。

所以父親樹到完全二叉樹是雙射。完全二叉樹的數量與父親樹的數量是相同的。

 

那麼考慮(2n+1)個節點的完全二叉樹的數量。

根節點是一定的,思考剩下的2n個節點。這2n個節點一定是n個左兒子(兒子節點,不要看成葉子節點),n個右兒子。

做不包括樹根的先序遍歷。節點是左兒子爲0,右兒子爲1。那麼結果就是一個2*n個數的數列,其中n個0,n個1。由於是先序遍歷,前綴0一定比前綴1多,即爲卡特蘭數。完全二叉樹與先序遍歷一一對應。所以完全樹的數量爲Cat_n

綜上所述,n個節點的二叉樹,(2*n+1)個節點的完全樹,數量均爲Cat_n

 

 

 

 

 

 

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