java實現二分檢索樹

2021-07-10 01:44:50 字數 2260 閱讀 9499

二分檢索樹的左子樹比根小,右子樹比根大。這裡用二分檢索樹實現了乙個符號表,包括常用的api。

package symbolform;

import ******structure.queue;

public

class bst, v> implements symbolform

public

node(node n)

}@override

public

void

put(k key, v value)

private node put(node root, k key, v value)

@override

public v get(k key)

private node get(node root, k key)

@override

public boolean contain(k key)

@override

public boolean isempty()

@override

public

intsize()

private

intsize(node n)

@override

public k min()

return r.key;

}@override

public k max()

return r.key;

}@override

public k floor(k key)

/*** 邏輯:如果給定的鍵key小於二叉查詢樹的根節點的鍵, 那麼小於等於key的最大鍵floor(key)一定在根節點的左子樹中,

* 如果給定的鍵key大於二叉查詢數的根節點,那麼只有當根節點右子樹 中存在小於等於key的節點時,floor(key)才會出現在右子樹中

* 否則根節點就是floor(key)

* * @param n

* @param key

* @return

*/private node floor(node n, k key)

else

return n;

}@override

public k ceiling(k key)

private node ceiling(node n, k key)

@override

public

intrank(k key)

private

intrank(node n, k key)

@override

public k select(int k)

private node select(node n, int k)

@override

public

void

deletemin()

private node deletemin(node n)

@override

public

void

deletemax()

private node deletemax(node n)

@override

public

void

delete(k key)

private node delete(node n, k key)

}if (n != null)

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

return n;

}/**

* 心得,要寫好乙個遞迴,先準確理解當前函式的用途,含義. 因為要在當前函式中再使用這個函式

* @param n

* @return

*/private node min(node n)

@override

public

intsize(k lo, k hi)

// 這是我寫過的最牛叉的遞迴演算法了

private

intsize(node n, k lo, k hi)

@override

public iterablekeys()

@override

public iterablekeys(k lo, k hi)

// 這是我目前見過最牛叉的遞迴演算法了。。。

private

void

keys(node n, k lo, k hi, queuequeue)

}

最優二分檢索樹

前面給出了二分檢索樹的定義,下圖給出了關於保留字的乙個子集的兩棵二分檢索樹。為了確定識別符號x是否在一棵二分檢索樹中出現,將x先與根比較,如果x比根中識別符號小,則檢索在左子樹中繼續 如果x等於根中識別符號,則檢索成功地終止 否則檢索在右子樹中繼續下去。上述步驟可以形式化為過程search。line...

Java遞迴實現二分搜尋樹

實現 如下 private class node private node root private int size public bst public int size public boolean isempty 向二分搜尋樹中新增新的元素e public void add e e 向以nod...

動態規劃 最優二分檢索樹

最優二分檢索樹 最優二分檢索樹問題 求一棵使得預期成本最小的二分檢索樹 或是一棵空樹 或者是具有如下性質的非空二叉樹 1 左子樹的所有結點均小於根的值 2 右子樹的所有結點均大於根的值 對於乙個給定的識別符號集合,可能有若干棵不同的二分檢索樹 不同形態的二分檢索樹對識別符號的檢索效能是不同的。設給定...