徹底二叉樹

一、徹底二叉樹(Complete Binary Tree)的定義code

若設二叉樹的深度爲h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層全部的結點都連續集中在最左邊,這就是徹底二叉樹。

二、滿二叉樹的定義(full binary tree)百度

國內定義:一個二叉樹,若是每個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。
         也就是說,若是一個二叉樹的層數爲K,且結點總數是(2^k) -1 ,則它就是滿二叉樹。
國外定義:滿二叉樹的結點要麼是葉子結點,度爲0,要麼是度爲2的結點,不存在度爲1的結點。

注:不知道什麼緣由致使這個差別,百度百科建議在國際交流場合,包括學術會議發表論文等都應該使用美國和國際定義.在國內的各類考試場合,好比研究生考試/軟考/計算機等級考試等,都應該使用國內教材的定義.在校學生的校級考根據所在學校採用教材狀況而定。
三、二叉樹的基本性質二叉樹

節點的度:節點的子節點的數量爲該節點的度。在徹底二叉樹中,節點的度最多爲2,最少爲0。
葉子節點:度爲0的節點稱爲葉子節點。
假設徹底二叉樹的總結點樹爲n,度爲0的節點數量爲n0,度爲1的節點數量爲n1,度爲2的節點數量爲n2,則顯然知足n=n0+n1+n2。

性質1:二叉樹第i層上的結點數目最多爲2^(i-1),(i≥1)。

性質2:深度爲k的二叉樹至多有(2^k)-1個結點(k≥1)。 n=2^0+2^1+…+2^(k-1)=(2^k)-1故命題正確。

性質3 在任意-棵二叉樹中,若終端結點的個數爲n0,度爲2的結點數爲n2,則no=n2+1。
證實:由於二叉樹中全部結點的度數均不大於2,
   假設二叉樹的總結點樹爲n,度爲0的節點數量爲n0,度爲1的節點數量爲n1,度爲2的節點數量爲n2,
   則結點數之和:
       n=no+n1+n2 (式子1)
  另外一方面,1度結點有一個孩子孩,2度結點有兩個子,故二叉樹中孩子結點總數是:
       nl+2*n2+
  樹中只有根結點不是任何結點的孩子,故二叉樹中的結點總數又可表示爲:
       n=n1+2*n2+1 (式子2)
  由式子1和式子2獲得:
       no=n2+1

三、徹底二叉樹的性質終端

性質1: 當n爲偶數時,n1=1,n爲奇數時,n1=0。
證實:
咱們知道徹底二叉樹的特色,它缺乏結點時老是出如今葉子層(即最下面一層)的右子樹開始連續缺乏;
咱們設徹底二叉樹的深度爲k(k>1),則從第1層至第k-1層的結點總數爲(2^k)-1個(根據二叉樹性質2計算出來)且必定是奇數,則第k層的節點數爲n-(2^k)-1;
假若n是偶數,則由偶數-奇數=奇數性質可知第k層節點數爲奇數,則存在1個度爲1的節點;
假若n是奇數,則由奇數-奇數=偶數性質可知第k層節點數爲偶數,則不存在度爲1的節點。
性質2:具備n個節點的徹底二叉樹的深度爲k=[log2(n)](向上取整)。
性質3:對一顆具備n個節點的徹底二叉樹中的節點從1開始按層序編號,則對於任意的編號爲i(1<= i <=n的節點:
(1) 若是i=1,則節點i是根節點,無雙親。
(2) 若是i>1,則節點i的雙親節點爲[i/2](向下取整)
(3) 若是2i<=n,則i的左孩爲2i,若是2i>n,則i無左孩
(4) 若是2i+1<=n,則i的右孩爲2i+1,不然i無右孩
相關文章
相關標籤/搜索