DS部落格作業07 查詢

2022-04-12 20:48:00 字數 2147 閱讀 5776

本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。

isbst函式傳入二叉樹t

定義bintree型變數 tleft tright

ift為空且左右子樹皆為空 返回true end if

遍歷左子樹 tleft接受返回值 end if

遍歷右子樹 tright接受返回值 end if

返回 左子樹最右節點數值《根節點數值《右子樹最左節點數值

首先加入map庫函式

map 定義q

定義int型別m

定義string型別a2 a3

定義char 型別a1

while m-- do

輸入id

if (a1 == 'n')//判斷輸入需要進行的操作是否為新建

if (q.find(a2) == q.end())//查詢資料庫當中是否有重複

存放 else 返回error: exist end if

if (a1 == 'l')//判斷是否執行登陸操作

if (q.find(a2) == q.end())//查詢在資料庫中是否有這個使用者

返回 error: not exist

else if (it->second == a3)//判斷輸入的密碼是否錯誤

輸出login: ok else 輸出error: wrong pw end if

庫函式中map先搬出來

定義map型別table

定義int型別n k

定義long int型別 id len

輸入n k

while n-- do

定義char型別變數c 且賦值『0』

輸入 id len c

if(c == 'x')//對帶有x的id進行讀取 end if

if(!table.count(id))//讀取資訊存入資料庫

無 則把其賦為0 end if

if(len <= k && len > 0)//判斷是否大於最短公里數

保留原值或是選擇修改 end if

輸入nwhile n-- do

執行與上面相同的操作

if語句內的內容修改成輸出

·q1:這道題思路其實跟上一道差不多 都是檢查重複並且執行相應操作 這道題最主要的問題還是在於對於題目的理解方面

·a1:剛開始的時候沒有再設定乙個迴圈 剛開始的時候直接丟掉了存入資料的部分

·q2:然後的失誤是在對最短路徑長度的判斷 這個部分問題出在了+k還是+len

·a2:解決辦法很簡單 度娘唄

利用非遞迴的中序遍歷對二叉樹進行遍歷,借助了vector和棧的容器,將遍歷結果存在vector中,最後就可以得到乙個中序遍歷所得到的中序序列,而第k-1的位置就是第k小的結點

這道題的**量雖然少 但是整理起來思路還是很複雜的 比如非遞迴寫法的中序遍歷 其次是vector容器可以控制陣列的長度,有效的防止陣列越界的問題,容器有很多 但是我接觸的還是少的 所以之後要去了解容器的作用了 然後進行操作會比較簡單一些

DS部落格作業07 查詢

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

DS部落格作業07 查詢

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

DS部落格作業07 查詢

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