1. 程式人生 > >資料結構模組

資料結構模組

線性表

順序表:記憶體中分配連續的空間,只存資料,不需要存地址資訊,新增刪除效率低,查詢方便。

連結串列:增加刪除效率高,不會有閒置空間,但是要儲存下一個節點的編號,所以要從不同角度看節省空間這個問題。

設一棵完全二叉樹共有700個結點,求該二叉樹有幾個葉子結點?

根據“二叉樹的第i層至多有2^(i − 1)個結點;深度為k的二叉樹至多有2^k − 1個結點(根結點的深度為1)”這個性質:
因為2^9-1 < 700 < 2^10-1 ,所以這個完全二叉樹的深度是10,前9層是一個滿二叉樹,
這樣的話,前九層的結點就有2^9-1=511個;而第九層的結點數是2^(9-1)=256
所以第十層的葉子結點數是700-511=189個;
現在來算第九層的葉子結點個數.
由於第十層的葉子結點是從第九層延伸的,所以應該去掉第九層中還有子樹的結點.因為第十層有189個,所以應該去掉第九層中的(189+1)/2=95個;
所以,第九層的葉子結點個數是256-95=161,加上第十層有189個,最後結果是350個.