DS部落格作業07 查詢

2022-05-19 22:36:25 字數 2627 閱讀 1138

本章學習了順序表、樹表、雜湊表的查詢方式,學會計算各種查詢方式下的asl

樹表部分的b樹和平衡二叉樹較為複雜,雜湊表相對容易掌握

期末要複習的有點多,最近**打得太少,進度有點跟不上

是否二叉搜尋樹

bool isbst

這只是個殼

bool isbstreal //真·isbst

if bt==null //該分支是二叉搜尋樹

return true

if 元素值超出min-max範圍

return false

遞迴執行isbstreal(左子樹,min,bt->data-1)和isbstreal(右子樹,bt->data+1,max)

遞迴**left,right寫反,導致正確的測試點不能過

一波遞迴寫完發現給定函式沒法遞迴,然後懶得不想重寫,套了個殼交上去發現竟然有分

打了快一年pta才發現函式題可以這麼玩

航空公司vip客戶查詢

定義map類 airline

for i=0 to n

輸入使用者,航程

航程不滿最小值替換為最小值

使用者,航程存入map類

for i=0 to n

輸入使用者

if 找到

輸出航程

else

輸出no info

超時,超時,超時·······

對比了其它人的**發現同樣的思路使用scanf,printf可以壓著時間過,查了一下資料

可以用ios::sync_with_stdio(false);取消cin cout 與 stdio 同步

強烈質疑測評機制有問題:原封不動的**打個注釋又超時了

二叉搜尋樹中的最近公共祖先

int lca

呼叫find判斷兩數是否都在樹中

否,return error

if 空樹

return error

while 樹不空

if 兩數都小於元素值

樹指標指向左子樹

if 兩數都大於元素值

樹指標指向右子樹

else

返回指標指向的節點

int find 

if 空樹

return 0

if 找到對應元素

return 1

if 元素值大於查詢值

遞迴在左子樹中查詢

else

遞迴在右子樹中查詢

q1.return error直接用return -1

q2.給定數字不在樹中時錯誤

a2.加入find函式判斷給定數字是否在樹中

查詢和最小的k對數字

for i=0 to nums1.size()

for j=0 to nums2.size()

生成所有可能的數字對,兩數字和為鍵,兩數字為值,存入multmap

for 使用迭代器遍歷multmap

將前k個的值存入陣列res中

返回陣列res

學習了pair的用法,multmap的部分用法,為課設做準備

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 查詢

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