二叉查詢樹(BST)

2021-08-01 20:01:05 字數 1727 閱讀 7223

二叉查詢樹,也稱為二叉排序樹二叉搜尋樹

二叉查詢樹結合了鍊錶插入的靈活性有序陣列查詢(二分查詢)的高效性

用二叉查詢樹實現有序符號表的api。

public

class bst, value>

}//有序符號表的相關方法

//...

//...

}

public

intsize()

private

intsize(node x)

public value get(key key) 

/**

* 查詢操作

* 在以x為根的子樹中查詢鍵對應的值。

* 這裡採用遞迴方式。

*/private value get(node x, key key)

public

void

put(key key, value val)

/*** 插入操作

* 如果key存在於以x為根的子樹中,更新它的值。

* 如果key不存在,插入該鍵值對。

* 每查詢到乙個結點都要更新它的規模資訊和左(右)鏈結資訊。

* 這裡採用遞迴方式。

*/private node put(node x, key key, value val)

/**

* 查詢並返回排名為k的鍵(即樹中正好有k個小於它的鍵)

*/public key select(int k)

private node select(node x, int k)

/**

* 查詢並返回鍵為key的排名

*/public

intrank(key key)

private

intrank(node x, key key)

/**

* 返回最小的鍵

*/public key min()

private node min(node x)

/**

* 刪除最小節點

*/public

void

deletemin()

private node deletemin(node x)

public

void

delete(key key)

private node delete(node x, key key)

x.n = size(x.left) + size(x.right) + 1;

//更新當前結點的規模

return x;

}

/**

* 二叉查詢樹的範圍查詢

*/public iterablekeys()

public iterablekeys(key lo, key hi)

private

void

keys(node x, queuequeue, key lo, key hi)

二叉查詢樹 BST

當所有的靜態查詢結構新增和刪除乙個資料的時候,整個結構都需要重建。這對於常常需要在查詢過程中動態改變資料而言,是災難性的。因此人們就必須去尋找高效的動態查詢結構,我們在這討論乙個非常常用的動態查詢樹 二叉查詢樹。二叉查詢樹的特點 下面的圖就是兩棵二叉查詢樹,我們可以總結一下他的特點 1 若它的左子樹...

二叉查詢樹BST

樹由node物件組成,每個物件有一對鍵值 兩條鏈結和乙個節點計數器n。每個node物件都是一棵含有n個節點的子樹的根節點,它的左鏈結指向一棵由小於該節點的所有鍵組成的二叉查詢樹,右鏈結指向一棵由大於該節點的所有鍵組成的二叉查詢樹。在bst類中,還應定義乙個node物件root,指向當前二叉樹的根節點...

二叉查詢樹BST

binary search tree bst是一棵資料域有序的樹,其左子樹上的所有結點的資料域均小於或等於根結點的資料域,右子樹上所有結點的資料域均大於根結點的資料域,即其中序遍歷是有序的。二叉查詢樹的基本操作 1.查詢操作 和普通二叉樹的查詢不同,二叉查詢樹可根據資料域的比較對左右子樹選擇遞迴 v...