Learning Data Structure_3_串和樹(1)

來源:互聯網
上載者:User

標籤:圖書館   二進位   大迴圈   線性表   選修課   

    今天找兼職繼續碰壁中,吃過中飯接著蹲圖書館看資料結構,呵呵,被KMP演算法虐了一下午,恨啊,當初上資料結構選修課的時候怎麼沒好好聽呢。下面是今天的學習筆記。


串(string)

    1.定義:是由0個或多個字元組成的有限序列,即字串。

    2.串的比較通過字元的編碼大小來實現,有ASCII碼(7位和8位二進位)、Unicode碼(16位);字串的相等。

    3.串不是線性表,因為串針對的是字元集,注重子串的尋找替換等,線性錶針對單個元素的操作。

    4.串也分順序儲存結構和鏈式儲存結構

    5.樸素的模式比對演算法:對主串作大迴圈,主串的每個字元開頭對子串作子串長T的小迴圈,直到匹配成功或全部遍曆。時間複雜度O((n-m+1)*m)

    6.KMP模式比對演算法

      原理:利用已經完成的匹配結果,省去後續重複的匹配操作。時間複雜度O(n+m)

      重痛點:next[j]的求解、利用next[]數組實現Index操作

      next[j]:前j-1個匹配,主串第i個與模式第j個不匹配時,模式串需將第next[j]個字元與主串第i個相比較(i不動)。


Void get_next(String  T,  int  *next)

{

  Int i, j;

  i=1 , j=0;

  next[1]=0;

  while (i < T[0])

  {

   if(j==0 || T[i] == T[j])

{

  i++;

  j++;

  next[i] = j;

}

else  j = next [j];

  }

}

   7. 改進的KMP演算法

      對next[]的改進:在計算出next[]的同時,若a位字元與它next所指向的b字元相等,則該a位的nextval就指向b位的nextval,否則a位的nextval就等於a位的next值。 


樹(tree)

    1.定義:是n個結點的有限集;有且僅有一個根節點;子樹互不相交。

    2.結點分類:度(結點擁有子樹的個數)為0的為葉結點(終端結點);樹的度是各結點度的最大值

    3.森林:m>=0棵互不相交的樹的集合。

    4.樹的儲存結構:雙親標記法;孩子標記法;孩子兄弟標記法。都可以根據演算法的需要增加特定的指標域來實現上述3種標記法中的功能。

    5.二叉樹:所以結點的度<=2 ;左右子樹是有順序的

    6.特殊的二叉樹

      斜樹:所有結點均只有左(右)子樹——線性表就是一種斜樹,是樹的特例。

      滿二叉樹:所有分支結點都有左右子樹,且所有葉子都在最後一層上。

      完全二叉樹:按層序編號不會出現空擋的二叉樹。

    7.二叉樹的性質

      第i層最多有2^(i-1)個結點;

      深度為k的二叉樹最多有 (2^k)-1 個結點;

      任意二叉樹滿足: 葉結點樹 = 度為2的結點數 + 1 ;

      完全二叉樹的結點為n, 則其深度為  (log2 n)向上取整 + 1;

      完全二叉樹結點i的雙親是   i/2 向上取整;左孩子是2i。

    8.二叉樹的儲存結構

      完全二叉樹可以用簡單的順序結構來表示;一般的二叉樹需用而二叉鏈表來表示:lchild+data+rchild,若有需要可再添加指向雙親的指標,即三叉鏈表。

    9.二叉樹的遍曆:每個結點都被訪問且僅訪問一次

      前序走訪:根,左子樹,右子樹

      中序遍曆:左子樹,根,右子樹

      後序遍曆:先葉子後結點(依次從左子樹到右子樹),再根結點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.