數據結構之樹

一、定義

二、概念

度、葉結點/終端結點、分支結點/非終端結點、根結點/內部結點、孩子、雙親、兄弟、祖先、子孫、堂兄弟、層次

、深度(高度)、有序/無序樹、森林

三、存儲結構:簡單的順序存儲結構無法滿足,要使用順序+鏈式結構

  1. 雙親表示法:當前數據+parents指針
  2. 孩子表示法:順序存儲(當前數據+firstchild)+ firstchild單鏈表存儲(child+next)
  3. 雙親孩子表示法:當前數據+firstchild指針+parents指針
  4. 孩子兄弟表示法:當前數據+firstchild指針+右兄弟指針(注:該方法可轉換成二叉樹)

四、二叉樹:

  • 定義:

  1. 定義:n(n\geq 0)個結點的有限集合,該集合或爲空集或爲一個根節點和兩顆互不相交的稱爲根節點的左子樹和右子樹的二叉樹組成

  2. 特點:每個結點最多兩個子樹,左右子樹有順序,即使只有一個子樹也要區分左右

  • 性質

  1. 二叉樹的第i層至多有2^{^{i-1}}個結點(i\geq 1
  2. 深度爲K的二叉樹,至多有2^{^{k}}-1個結點(k\geq 1
  3. 二叉樹的終端結點數爲n_0,度爲2的結點數爲n_2,則n_0 = n_2 +1
  4. n個結點的完全二叉樹深度爲\left \lfloor log_2n \right \rfloor+1(符號表示不大於)
  5. n個結點的完全二叉樹,從上到下,從左到右編號,對任一結點i(1\leq i\leq n):

       (1)i=1,該結點爲根節點,i>1,該結點的雙親爲\left \lfloor i/ 2\right \rfloor

       (2)2i>n,該結點無左孩子,否則左孩子爲2i

       (3)2i+1>n,該結點無右孩子,否則右孩子爲2i+1

  • 二叉樹存儲結構

  1. 順序存儲(一般用於完全二叉樹):用一組數組存儲結點,下標體現結點間的邏輯關係
  2. 二叉鏈表:當前數據+左子樹指針+右子樹指針(加上雙親指針爲三叉鏈表)
  • 二叉樹的遍歷

  1. 前序(根左右)
  2. 中序(左根右)
  3. 後序(左右根)
  • 二叉樹的建立

  • 樹、森林與二叉樹的轉換

  1. 樹  ==》二叉樹
  2. 樹《==  二叉樹
  3. 森林  ==》二叉樹
  4. 森林《==  二叉樹
  • 特殊二叉樹

  1. 斜樹
  2. 滿二叉樹
  3. 完全二叉樹
  4. 線索二叉樹
  5. 哈夫曼樹(編碼)

 

 

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