DS部落格作業07 查詢

2022-05-16 20:18:29 字數 1607 閱讀 9010

二叉排序樹難度比較大,首先是插入關鍵字的時候就必須注意,如果關鍵字插入就出現錯誤,那接下來對樹的操作就會錯誤。樹的另乙個難點是平衡二叉樹插入結點過程中的調整,雖然只有ll,rr,lr,rl四種調整,看課本也可以理解,但是當實際操作的時候還是難度比較大,必須先確定是插入的哪個結點導致了樹的不平衡,然後再進行對應的調整方法。

雜湊表在前面的pta題目裡有使用過,具體的認識還是在這一章裡,解決雜湊衝突的線性探測法是第一次接觸,用這個方法構造雜湊表的時候要注意探測次數的統計,因為探測次數要用於接下來asl的計算。

2.1.1設計思路

int find(tree t,int n)

int lca( tree t, int u, int v )

2.1.2**截圖

2.1.3本題pta提交列表說明

q1:忘記了如果u,v不在數中這個測試點

a1:加入find函式去尋找u,v是否在樹中,問題解決。

2.2.1設計思路

bool isbst ( bintree t )

2.2.2**截圖

2.2.3本題pta提交列表說明

q:沒有考慮當左右子樹都為二叉搜尋樹但答案為no的情況

a:在左右子樹判斷正確後在和根結點進行一次比較,問題解決。

2.3.1設計思路

2.3.2**截圖

2.3.3本題pta提交列表說明在用除餘法作為雜湊函式、線性探測解決衝突的雜湊表中,寫一刪除關鍵字的演算法,要求將所有可以前移的元素前移去填充被刪除的空位,以保證探測序列不致於斷裂。

首先計算關鍵字的雜湊位址,若該位址為空,則空操作;若該位址有關鍵字,但與給定值不等,則用解決衝突的方法去查詢給定值;若該位址有關鍵字且與給定值相等,則實行刪除。題目要求將所有可以前移的元素前移去填充被刪除的空位,以保證探測序列不斷裂。由於用線性探測解決衝突,設被刪除元素的雜湊位址為i,則其餘m-1(m為表長)個位置均可能是同義詞。查詢同義詞的操作直到碰到空位址或迴圈一圈回到i才能結束。為了提高演算法效率,減少資料移動,應將最後乙個同義詞前移填充被刪除關鍵字。

這個題目因為用線性探測解決衝突,所以可能發生兩個第一雜湊位址不同的記錄爭奪同一後繼雜湊位址的情況。用上面的**進行處理後,對於雜湊位址為i的記錄沒有問題了,但由於將位址j置空,有可能截斷了其它記錄的探測通路。最明顯的是雜湊位址為j的記錄就查不到了。解決的辦法是繼續調整,直到當前雜湊表中的每個記錄的查詢都是正確的為止。

DS部落格作業07 查詢

1.思維導圖 2.談談你對查詢運算的認識及學習體會。學習了許多查詢的方法,比如 線性表中的順序查詢 折半查詢 分塊查詢。順序我們之前也接觸過,而折半查詢較為順序查詢的一種改進,這種改進使效率快了許多。樹錶類的查詢 二叉排序樹 平衡二叉樹 還有b 樹。其中難操作的是平衡二叉樹的失衡調整,ll和rr好做...

DS部落格作業07 查詢

本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。isbst函式傳入二叉樹t 定義bintree型變數 tleft tright ift為空且左右子樹皆為空 返回true end if 遍歷左子樹 tleft接受返回值 end if 遍歷右子樹 tright接受返回值 end if 返回 左子樹最右節...

DS部落格作業07 查詢

在學習本章的知識前,我們得先掌握之前的二叉樹的內容,這樣才能順利的掌握課本知識。在程式設計前要先想清楚思路再開始寫 靈活地利用書上的知識。對於書上的演算法 我們一定要仔細鑽研每一步的具體含義和目的,在此基礎上深入的了解演算法的實現過程,在查詢時利用書中給出的各種方法可以極大地減少時間複雜度,從而提高...