真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

B樹-查找

B樹系列文章

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站制作和雅安電信機(jī)房的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗(yàn)和案例。

1.B樹-介紹

2.B樹-查找

3.B樹-插入

4.B樹-刪除

查找

假設(shè)有一棵3階B樹,如下圖所示。

下面說明在該B樹中查找52的過程

首先,從根結(jié)點(diǎn)出發(fā),根結(jié)點(diǎn)有兩個(gè)鍵40和70,52在40和70之間,因此查找根結(jié)點(diǎn)的第二個(gè)兒子結(jié)點(diǎn)

接著,查找根結(jié)點(diǎn)的第二個(gè)兒子結(jié)點(diǎn),該結(jié)點(diǎn)的第一個(gè)鍵值為55,52小于55,因此查找52可能在該結(jié)點(diǎn)的第一個(gè)兒子結(jié)點(diǎn)上

此時(shí)到達(dá)葉子結(jié)點(diǎn),遍歷該結(jié)點(diǎn)的鍵值列表,發(fā)現(xiàn)52在該鍵值列表上,說明該B樹上有目標(biāo)鍵值,搜索結(jié)束

到達(dá)葉子結(jié)點(diǎn)時(shí),如果葉子結(jié)點(diǎn)上沒有目標(biāo)鍵值,說明B樹上沒有目標(biāo)鍵值,搜索結(jié)束。

可以看出來,上述都給經(jīng)歷過的每個(gè)結(jié)點(diǎn)的第一個(gè)不小于52的鍵值標(biāo)紅處理了

這個(gè) 鍵值在鍵值數(shù)組的 下標(biāo) 剛好是 要訪問的兒子結(jié)點(diǎn) 在兒子結(jié)點(diǎn)列表里 的 下標(biāo)。

這里是查找的代碼

/**
* 查找key, 返回key所在結(jié)點(diǎn)及下標(biāo)
* 采用遞歸的方法
**/
func (bTreeNode*BTreeNode) search(key int) (*BTreeNode, int) {
if bTreeNode.isLeaf || bTreeNode.keyNum == 0 {
return nil, -1
    }

// 找到第一個(gè)不比key小的,注意leaf的數(shù)量比key數(shù)量多1
    idx := 0
    for idx < bTreeNode.keyNum && key > bTreeNode.keyList[idx] { // 這里可以采用二分查找提高效率
        idx++
    }

// 在當(dāng)前節(jié)點(diǎn)找到了key
    if idx < bTreeNode.keyNum && bTreeNode.keyList[idx] == key {
return bTreeNode, idx
    }

// 是葉子結(jié)點(diǎn) 則找不到了
    if bTreeNode.leafList[idx].isLeaf {
return nil, -1
    }

return bTreeNode.leafList[idx].search(key)
}

/** 查找key, 返回key所在結(jié)點(diǎn)及下標(biāo)
* 時(shí)間復(fù)雜度為O(logn)
**/
func (bTree*BTree) Search(key int) (*BTreeNode, int) {
return bTree.root.search(key)
}

新聞標(biāo)題:B樹-查找
網(wǎng)站路徑:http://weahome.cn/article/dsoicpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部