查找的方式

一、靜態查找:

1、順序表:順序查找

2、有序表:這般查找

3、(比較難)靜態樹表:構建靜態最優查找樹(Static Optimal Search Tree),但有效率的方式是次優查找樹(Nearly Optimal Search Tree)。

用途:查找各元素的概率不同時,找到一個權值和最小的樹,遞歸構建樹。

注意:在構建的時候,有可能出現被選爲根節點的關鍵字的權值比與它相鄰的關鍵字的權值小,此時應當作出調整。

4、索引表:表中存放了多個表,每個表的元素的關鍵字在索引表中加以限制。查找的時候去該表中順序查找。


二、動態查找表:

表的結構本身是動態生成的,查找成功返回,失敗插入。

1、二叉排序樹:左子樹所有節點的關鍵字的值小於根節點的關鍵字的值,右子樹大於根節點關鍵字。

插入:一定是查找不成功時路徑上最後訪問的一個節點的左兒子或者右兒子。

性質:中序遍歷可以得到有序序列。

刪除:找個例子自然明白。

1)左子樹空。

2)右子樹空。

3)都非空。被刪除節點的最右兒子的左子樹爲被刪除節點的左子樹,其餘上頂一位。

平衡二叉樹:任意一個節點左右子樹深度之差不超過一。

方法:4種情況。(待填)


2、B-樹

文件系統中廣爲應用。

定義:m階B-樹

(1)樹中每個結點至多有m棵子樹。

(2)若根節點不是葉子節點,則至少有兩棵子樹。

(3)除根節點之外的所有非終端節點至少有[m/2]棵子樹。

(4)所有非終端結點中包含數據的表示範圍,如2個Key,有三個域,三個子樹。

(5)所有葉子節點都出現在同一層次上,並且不帶信息,可以看作是外部節點或者是查找失敗的節點。

插入:從最底層的葉子節點開始添加,如果超過限制,就要進行節點分裂。

刪除:如果刪除後少於關鍵字數目少於[m/2],刪除完成,否則合併節點。


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