原创 平衡二叉樹(AVL)的插入和刪除詳解(下)

平衡二叉樹(AVL)的插入和刪除詳解(上):http://blog.csdn.net/sysu_arui/article/details/7897017 1、測試代碼 爲減小篇幅,只給出了主程序,其他函數模塊請看(上)中的描述。 #inc

原创 圖的廣度優先搜索(Breadth First Search)

基本思想: 首先訪問初始點v,之後依次訪問v的各個未成訪問過的鄰接點,然後分別從這些鄰接點出發依次訪問他們的鄰接點,直至圖中所有已被訪問的頂點的鄰接點都被訪問到。 圖的廣度優先遍歷類似於樹的按層次遍歷的過程,要用到數據結構隊列,下面直接

原创 平衡二叉樹(AVL)的插入和刪除詳解(上)

AVL樹維基百科:http://zh.wikipedia.org/wiki/AVL樹 在計算機科學中,AVL樹是最先發明的自平衡二叉查找樹。在AVL樹中任何節點的兩個子樹的高度最大差別爲1,所以它也被稱爲高度平衡樹。查找、插入和刪除在平均

原创 圖的深度優先搜索(Depth First Search)

算法思想: 訪問給定的起始點v,從v出發,訪問它的一個不曾被訪問過的鄰接頂點w1;再從w1出發,訪問w1的一個不曾被訪問過的鄰接頂點w2;…,如此下去,直至到達了一個頂點,它沒有未訪問的鄰接頂點爲止。退回一步到上一個被訪問的頂點,看它是否

原创 二叉查找樹的插入和刪除詳解

二叉查找樹是如下定義的: (1)  左子樹不空,則左子樹上的所有結點的值均小於根結點的值 (2)  右子樹不空,則右子樹上的所有結點的值均大於根結點的值 二叉查找樹可以爲空,二叉查找樹是遞歸定義的,也就是說其左右子樹也爲二叉查找樹。 二叉

原创 Rabin-Karp算法 (拉賓-卡普)

Rabin-karp算法是樸素字符串匹配算法的一個特例。當字母表∑爲d進制數時,即∑={0,1,2,…d-1}。如當d=10時字母表中的每個字符都是一個十進制數。我們在比較兩個長度爲m的子串時,可以把這兩個子串當作整數進行比較,而不用逐個

原创 二叉查找樹的C++實現

二叉查找樹的插入和刪除詳解請看:http://blog.csdn.net/sysu_arui/article/details/7865864 前面詳細講解了二叉查找樹插入和刪除,現在給出完整的C++實現,代碼如下: #include <c

原创 伸展樹(splay tree)實現

前面講解了平衡二叉查找樹,注意到一個結點被訪問後,接下來很有可能被再次訪問,所以可以採取把最近訪問的結點上移(比如說移動到根結點),方便以下訪問。這次要講解的伸展樹就是來解決該問題的。 伸展樹又稱自適應查找樹,它的各種操作平均複雜度爲O(

原创 平衡二叉樹(AVL)的另一種C++實現

平衡二叉樹(AVL)的插入和刪除詳解(上):http://blog.csdn.net/sysu_arui/article/details/7897017 平衡二叉樹(AVL)的插入和刪除詳解(下):http://blog.csdn.net

原创 利用有限自動機進行字符串匹配

原理我簡單說兩句,詳細原理大家請參考《算法導論》第32章P563-P567,至於自動機原理,請參考其他編譯原理書籍。 說明:Pk=P[1..k],表示模式P的前綴,也就是其前k個字符。k=0時,P0表示空串,空串爲任何串(包括空串)的前綴

原创 樸素的字符串匹配算法

一個字符串是一個定義在有限字母表∑上的字符序列。例如,ABCDABC是字母表∑ = {A,BC,D}上的一個字符串。字符串匹配問題就是在一個大的字符串T中搜索某個字符串P的所有出現位置。其中,T稱爲文本(或稱主串,模式串),P稱爲模式(或

原创 紅黑樹(Red BlackTree)的實現

      前面我們講解了簡單二叉查找樹、AVL樹,伸展樹,對於一棵高度爲h的二叉查找樹,其動態集合操作Search、Minimum、Maximum、Successor、Predecessor、Insert、Delete的運行時間爲θ(h

原创 二叉樹的非遞歸遍歷及層次遍歷

二叉樹的基本操作請看:http://blog.csdn.net/sysu_arui/article/details/7865876 前面簡答介紹了二叉樹的基本操作,包括二叉樹的建立,銷燬,遞歸遍歷,以及其他一些常見的遞歸算法,現在集中討論

原创 二叉樹的基本操作

二叉樹作爲一種非常重要的數據結構,今天對其做簡單的回顧1、二叉樹的定義 typedef char ElementType; typedef struct BiTreeNode { ElementType data; struc

原创 Latent Semantic Analysis

Abstract LSA,Latent Semantic Analysis通過對詞-文檔共現矩陣(term-document co-occurrence matrix)進行SVD分解,把單詞和文檔映射到一個latent semantic