q1:記得return很重要
a1:在插完的時候沒有return,什麼都沒變,然後一直看自己有沒有插錯,就是忘了return
q2:寫position find函式迴圈時的條件
a2:要不等於該節點且樹不為空,不要想著不等於節點就忘了樹空的情況
int find(tree t, int u)
if t為空 then 不存在
return 0
if x 等於 u then
return 1
if x 大於 u
遞迴找左孩子;
if x 小於 u
遞迴找右孩子;
int lca(tree t, int u, int v)
if t 為空 then
返回error
if 不在樹中
返回error
if 剛好等於本身
返回 t->key
if 在兩數之間
返回 t->key
if 比最大還大 then
遞迴找左孩子;
if 比最小還小 then
遞迴找右孩子;
q1:判斷該元素是否在樹中
a1:剛開始沒有考慮的元素是否在樹中這件事,後來經過老師講評知道可以自己寫乙個函式進行判斷
q2:return什麼要注意!
a2:題目要求空樹時return error,但我看是int型函式就return 0,然後就錯了
q3:要判斷好">","
a3:熟悉二叉搜尋樹的性質左邊小右邊大
輸入 n
for i=0 to n then
輸入type,username,password
if type=="l" then 新建號碼
找不到id時
輸出"error: not exist"
賬號密碼不匹配時
輸出"error: wrong pw"
否則輸出"login: ok" 登陸成功
當找不到id時
s[id]置為password
輸出"new: ok"
否則輸出"error: exist"
else //註冊號碼
當找不到id時
s[id]置為password
輸出"new: ok"
否則輸出"error: exist"
q1:用什麼方法可以查詢的時候不需寫一堆的迴圈然後直到找到或遍歷完呢
a1:可以使用map函式,使用map函式一些遍歷查詢的過程就不需要我們去寫,用find()和end()就可以實現判斷是否存在等功能
q2:怎麼實現乙個賬號對乙個密碼
a2:用map函式設乙個變數,下標為賬號,其中元素為密碼。
給出二叉樹的根,找出出現次數最多的子樹元素和。乙個結點的子樹元素和定義為以該結點為根的二叉樹上所有結點的元素之和(包括結點本身)。然後求出出現次數最多的子樹元素和。如果有多個元素出現的次數相同,返回所有出現次數最多的元素
該題的意思是求出二叉樹所有子樹(包括包含根節點的樹)的元素和,然後求出出現元素和次數最多的那些。因為需要求子樹,所以肯定是遞迴最為方便。
兩個階段:
1.遍歷二叉樹,為每個和統計出現次數,記錄在map中
2.遍歷map,將最大的值存到vector中
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四種調整,看課本也可以理解,但是當實際操作的時候還是難度比較大,必須先確定是插入的哪個結點導致了樹的不平衡,然後...