1. 程式人生 > >博客作業05—查找

博客作業05—查找

一個 不同 bool num 搜索 復雜度 否則 簡單的 也會

一:學習總結

1查找結構思維導圖

技術分享圖片

2查找學習體會

查找的內容很多,計算平均查找度的方法也不同,時間復雜度也不同,但是效率真的能提高很多,就是各種概念之間容易混亂,需要花時間認真研究。

二:PTA實驗作業

題目1:是否是二叉搜索樹

1設計思路

bool IsBST( BinTree T )
{
    若T是空樹則是二叉搜索樹;
    中序遍歷該樹得到的新節點的值一定要大於前一個值,否則不是;
    返回真;
}    

2代碼截圖

技術分享圖片

3PTA提交列表說明

技術分享圖片

部分正確:最開始只考慮了很簡單的情況。

技術分享圖片

只考慮在根節點出現左、右子樹都是二叉搜索樹,但是整棵樹不是這種情況,但是其實其他地方也會出現,,,用老師提醒的中序遍歷加上遞歸重新寫了一遍。

題目2:二叉搜索樹中的最近公共祖先

1設計思路

int search(Tree T,int u);
int LCA( Tree T,  int u, int v )//尋找u,v的共同祖先  
{  
    若樹為空或者u或v不在該樹中  ERROR;  
    若u或者v就是根節點的值    return T->Key;  
    若u或者v在同一棵子樹上     return T->Key; 
    若u大於T->key  最近共同祖先在左子樹上; 
    若u大於T->key  最近共同祖先在右子樹上; 
  
}
int search(Tree T,int u)//查看u是否在樹中  
{  
   若樹為空:則不在;
   查找該樹:
       若找到等值的key,則u在該樹中;
       否則不在;
} 

2代碼截圖

技術分享圖片

3PTA提交列表說明

技術分享圖片

部分正確:有較多種情況沒有考慮到,比如當前節點即為公共祖先或者是關鍵字不在樹中
補充後:

技術分享圖片

判斷關鍵字是否在樹中需要查找該樹,所以後來再寫了一個查找函數。

題目3:QQ帳戶的申請與登陸

1設計思路

    while(N--){   
       輸入命令符,QQ號碼,密碼;
       判斷命令符:  
       如果是新帳戶申請
        if(mapQQ.count(Num))   已經存在該用戶;
        else     存入新信息;  
       老用戶登錄
        if(!mapQQ.count(Num))  不存在該用戶;          
        else
                   if(mapQQ[Num]==M)  登錄成功;
           else   密碼錯誤; 

2代碼截圖

技術分享圖片

3PTA提交列表說明

技術分享圖片
技術分享圖片

三:截圖本周題目集的PTA最後排名

1 PTA排名:

技術分享圖片

2 我的得分:120

四:閱讀代碼

博客作業05—查找