二分檢索樹的左子樹比根小,右子樹比根大。這裡用二分檢索樹實現了乙個符號表,包括常用的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 右子樹的所有結點均大於根的值 對於乙個給定的識別符號集合,可能有若干棵不同的二分檢索樹 不同形態的二分檢索樹對識別符號的檢索效能是不同的。設給定...