完全二叉樹學習

2021-06-21 14:56:16 字數 1285 閱讀 5653

定義:假設高度為h,那麼前h-1層都是滿的,最後一層,從左向右,連續集中在最左邊;k層的完全二叉樹總節點個數最小為2^k-1,最大節點個數為2^(k-1)

可以從陣列形式儲存的方面來考慮,陣列形式儲存的完全二叉樹,如果元素下標為i,那麼其左子樹在2i+1,右子樹在2i+2,父節點在floor((i-1)/2)

如下圖所示:

1       

/    \     

2     3    

/  \      / \   

4   5  6  7  

/ \    / \       

8  9 10 11 

這是一顆完全二叉樹,如果去掉7、8、9,陣列形式的儲存約束就被破壞了:

1       

/     \     

2       3    

/ \      /    

4  5   6     

/ \    /  \       

8  9 10 11 

1       

/      \     

2      3    

/  \       / \   

4   5    6  7  

/      / \       

8    10 11

用乙個例題來解釋:

設一棵完全二叉樹共有699個結點,則在該二叉樹中的葉子結點數為多少?

(13) 設一棵完全二叉樹共有699個結點,則在該二叉樹中的葉子結點數為______。() a. 349 b. 350 c. 255 d. 351 

滿意回答 b:350

首先你得知道什麼叫完全二叉樹! 完全二叉樹(complete binary tree)   

若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的節點都連續集中在最左邊,這就是完全二叉樹。   完全二叉樹是由滿二叉樹而引出來的。對於深度為k的,有n個結點的二叉樹,當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。

做這種題目你要知道二叉樹的兩個特點!第k層的節點個數最多2^(k-1)個,高度為k層的二叉樹,最多2^k-1個節點!

則在本題目中,共699個節點,因為是完全二叉樹,2^k-1>699>2^(k-1),所以高度為10,可以確定1到9層全滿,節點總算為511,剩下的188個肯定為葉子節點!第10層上的188個節點掛在第九層的188/2=94個節點上,則第九層剩下的2^(9-1)-94=162個也為葉子節點,最後總共188+162=350個葉子節點!

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...

二叉樹和完全二叉樹

二叉樹規律 假設根節點的高度為0 二叉樹是每個節點至多只有兩個節點的樹 深度為i所在的層至多有 2 i個節點 高度為k的二叉樹至多有2 k 1 1個節點 n0表示度為0的節點,n2表示度為2的節點,存在n0 n2 1 對所有樹有 節點個數 邊數 1 完全二叉樹規律 節點數為n的完全二叉樹,其高度為 ...

完全二叉樹

最近在看資料結構和演算法,這好多天沒碰幾乎全忘,搞乙個看到乙個完全二叉樹都算了半天,網上眾說紛紜啊,我還是以我的理解記錄一下給我做個記憶吧,以我這記憶力指不定以後又忘了。首先幾個概念 理想二叉樹,滿二叉樹,完全二叉樹。1 滿二叉樹 所有節點 除葉子 都有2個子節點,葉子節點都在一層,就是滿了的意思。...