最近在看資料結構和演算法,這好多天沒碰幾乎全忘,搞乙個看到乙個完全二叉樹都算了半天,網上眾說紛紜啊,我還是以我的理解記錄一下給我做個記憶吧,以我這記憶力指不定以後又忘了。
首先幾個概念:理想二叉樹,滿二叉樹,完全二叉樹。
1)滿二叉樹:所有節點(除葉子)都有2個子節點,葉子節點都在一層,就是滿了的意思。
2)理想二叉樹:今天看到這個概念糾結了半天,還是搞不懂他和滿二叉樹的區別,我的理解是其所有葉子節點均在同乙個高度或者深度,和滿的區別就是最後一層葉子節點的最右邊可以只有乙個?
3)完全二叉樹:這個網上定義太多了,我就是記錄一下吧:
高度為k個的完全二叉樹有2^k——2^(k+1)-1個節點。說到這又想到幾個關於二叉樹的:
二叉樹的第i層節點數目最多為:2^(i-1)(i>=1)。
深度為k的二叉樹至多有2^k-1個節點(i>=1)。
包含2^(k+1)-1個節點、高為k的理想二叉樹的節點的高度的和為2^(k+1)-1-(k+1)。
ps:樹的高度是距離葉子的路經長
樹的深度距離樹根的路經長,他們都可以代表乙個樹。
好吧。隨便找了個題目算下加深一下記憶:完全二叉樹有770個節點,問葉子節點有多少個?
依上面的公式:2^k-1=770,算出k=9.x,所有是10層,然根據定義,前9層是滿的有2^k-1=511個節點,所有最後一層有770-511=259個節點,第九層有259/2=129.5為130個節點,所以第九層的葉子節點為2^(i-1)=256-130=126個節點+最後一層的259個節點,所有最後葉子節點為:385個。
ok,搞定!~
二叉樹,完全二叉樹,滿二叉樹
二叉樹 是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的完全二叉樹,其高度為 ...
完全二叉樹
有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全部關閉,當每次有小猴子跑到乙個開關上時,它的狀態都會改變,當到達乙個內結點時,如果開關關閉,小猴子往左走,否則往右走,直...