DS博客做業07--查找

1.本週學習總結(0--2分)

1.思惟導圖

2.談談你對查找運算的認識及學習體會。

這兩週學了不少查找方面的知識,查找是一個很重要的學習板塊,查找分爲線性表查找,樹表查找,哈希表查找等,順序表查找包括順序查找,折半查找,索引存儲結構和分塊查找,其中索引存儲結構和分塊查找的執行效率高,普遍用於搜素引擎,字典就是分塊查找的應用。樹表查找分爲二叉排序樹,平衡二叉樹,B-樹和B+樹,二叉排序樹的操做較多,須要重點掌握。哈希查找是執行效率高的查找。哈希衝突的解決方法有開放地址法和拉鍊法。

2.PTA實驗做業(6分)

2.1.題目1:6-1 二叉搜索樹的操做集

2.1.1設計思路

BinTree Insert( BinTree BST, ElementType X )
{
    if(!BST){
        若是是空樹創建節點
    }
    根據數據大小創建左右節點
}
 
BinTree Delete( BinTree BST, ElementType X )
{
    if(BST==NULL)
    {
        printf("Not Found\n");
    }
    else
    {
              比較字符大小,不斷查找節點
              找到節點時,經過課本上講的方法,刪除節點並用合適的節點代替該節點的位置
    }
    return BST;
}
Position Find( BinTree BST, ElementType X )
{
    if(BST==NULL)
        return  NULL;
    X比節點數據大,則遍歷右孩子
        X比節點數據小,則遍歷左孩子
        X和節點數據相同則return該結點
}
Position FindMin( BinTree BST )
{
    if(BST){
       不斷地找左孩子直到沒有左孩子
    }
}
Position FindMax( BinTree BST )
{
    if(BST)
    {
        不斷地找右孩子直到沒有右孩子
    }
}

2.1.2代碼截圖(注意,截圖,截圖,截圖。不要粘貼博客上。)

2.1.3本題PTA提交列表說明。

Q1:本題在一開始設計得時候一直出現段錯誤。
A1:查找結果的過程當中發現,本題缺少對節點是否爲空的判斷,致使出現段錯誤。
Q2:以後調試,有一些答案錯誤。
A2:答案錯誤的緣由是在建樹的時候我犯了低級錯誤,使用可兩個Right。

2.2 題目2:6-2 是否二叉搜索樹

2.2.1設計思路

bool IsBST ( BinTree T )
{
     遍歷節點,當節點爲空時二叉樹爲空
     對節點進行判斷,若是左子樹的子節點大於根節點或者右子樹的子節點大於根節點,則非二叉搜索樹
     利用遞歸層層遍歷子節點,若是出現左孩子大於根或者右孩子小於根,則不是二叉搜索樹。
}

2.2.2代碼截圖

2.2.3提交列表

Q1:本題出現多種答案錯誤。
A1:調試了好幾回,檢查了好幾回,發現代碼沒有明顯錯誤,從新閱讀題目,發覺審題出現錯誤,搜索二叉樹的左節點的孩子所有要比根節點小,右孩子的孩子所有要比根節點大,新添加一段代碼,得出正確答案

2.3 題目3:6-3 二叉搜索樹中的最近公共祖先

2.3.1設計思路

int Find(Tree T,int x)
{
     判斷是否有節點存在
}
int LCA( Tree T,  int u, int v )
{
    樹爲空或找不到目標節點,返回error
    根據搜索樹的規律,祖先節點的數據的大小必然在兩個節點之間,同時最早出現的那個爲祖先節點。
}

2.3.2代碼截圖

2.3.3提交列表

Q1:本道題理解起來比較困難,尋找共同且最近的祖先節點是什麼意思。我一開始想不到設計思路
A1:參考網上的代碼,其實題目沒有那麼難,本題爲二叉搜索樹,祖先節點的大小一定在兩個查找數據以內,只要先確認查找 的數據是否存在,再和根節點進行比較,最後得出答案。

三、閱讀代碼(-2--2分)

3.1 題目

編寫一個函數來查找字符串數組中的最長公共前綴。

若是不存在公共前綴,返回空字符串 ""。

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
說明:

全部輸入只包含小寫字母 a-z 。

3.2 解題思路

找到最短字符串,以它的長度爲基準,從全部字符串的第一個字符開始對比,若都同樣,ans加上該字符,若不同,返回答案;數組

3.3 代碼截圖

3.4 學習體會

本道題涉及stl容器,在解決時可用多種方法,本題應用得解題方法時間複雜度爲O(n的平方),能夠解題,在string容器方面的使用值得學習。string min=str[0]這一步寫的好,爲求最短的串,把二維數組化爲一維數組。本題在執行方面,先求出最短串的長度,無形中避免了許多沒必要要的操做,增長了執行效率。以後進行比較,一有不匹配的就跳出循環。函數

相關文章
相關標籤/搜索