根據某個給定關鍵字k,從集合r中找出關鍵字與k相同的記錄
int sequentialsearch(statictable *tbl, elementtype k)
return -1;
}
順序查詢演算法的時間複雜度為o(
n)假設n個資料元素的關鍵字滿足有序(比如:小到大)
k_1 \le k_2 \le ... \le k_n
並且是連續存放(陣列),那麼可以進行二分查詢
**實現
int binarysearch(statictale *tbl, elementtype k)
return notfound; // 查詢失敗,返回-1
}
二分查詢演算法具有對數的時間複雜度o(
logn
) 二分查詢判定樹
進行二分查詢的時候,元素會構成乙個二分查詢判定樹:
* 判定樹上每個結點需要的查詢次數剛好為該結點所在的層數
* 查詢成功時查詢次數不會超過判定樹的深度
* n個結點的判定樹深度為[l
ogn2
]+1
結點的度(degree):結點的子樹個數
樹的度:樹的所有結點中最大的度數
葉結點(leaf):度為0的結點
父節點(parent):有子樹的結點是其子樹的根結點的父結點
子結點(child):若a結點是b結點的父結點,則稱b結點是a結點的子結點。子結點也稱孩子結點
兄弟結點(sibling):具有同一父結點的各結點彼此是兄弟結點
路徑和路徑長度:從結點n1
到nk的路徑為乙個結點序列n1
,n2,
...,
nk,ni
是ni+1
的父結點。路徑所包含邊的個數為路徑的長度
祖先結點(ancestor):沿樹根到某一結點路徑上的所有結點都是這個結點的祖先結點
子孫結點(descendant):某一結點的子樹中所有結點是這個結點的子孫
結點的層次(level):規定根結點在1層,其它任一結點的層數是其父結點的層數加1
樹的深度(depth):樹中所有結點中的最大層次是這棵樹的深度
樹和樹的表示
part1 樹 在現實生活中,有很多具有層次的關係。層次管理具有很高的效率。在計算機中也是一樣,樹就實現了計算機中的層次,在查詢修改資訊方面提供了很大的方便。之前在學習離散數學時已經對樹有了了解,所以這裡理解起來很容易。樹的定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹。對於任意一棵非...
樹的表示方法
順序儲存 查指定結點的雙親方便,指定結點的孩子則需要從頭遍歷 根節點固定儲存在0,且 1表示沒有雙親 define max tree size 100 typedef struct ptnode typedef struct ptree 順序 鏈式儲存 struct ctnode typedef s...
資料結構 樹 樹的表示
樹狀圖是一種資料結構,它是由n n 1 個有限結點組成乙個具有層次關係的集合。把它叫做 樹 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,每個子結點可以分為多個不...