本章學習了順序表、樹表、雜湊表的查詢方式,學會計算各種查詢方式下的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四種調整,看課本也可以理解,但是當實際操作的時候還是難度比較大,必須先確定是插入的哪個結點導致了樹的不平衡,然後...