/*
* 最優二叉搜尋樹
*/public class optimalbst ; //k1..k5的概率
private double q = ; //d1..d5的概率
public static void main(string args)
public optimalbst()
//計算得到最優二叉搜尋樹期望代價
private void compute()
for(int len=1;len<=scale;len++) }}
} }
//列印最優二叉查詢樹的結構
void print(int i,int j,int r)
if (j < i - 1)
else if (j == i - 1)
else
system.out.println("d" + j + "是k" + r + "的右孩子");
return;
} else
else
} print(i,rootchild - 1,rootchild);
print(rootchild + 1,j,rootchild);
} }執行結果與演算法導論上一致:
k2是根
k1是k2的左孩子
d0是k1的左孩子
d1是k1的右孩子
k5是k2的右孩子
k4是k5的左孩子
k3是k4的左孩子
d2是k3的左孩子
d3是k3的右孩子
d4是k4的右孩子
d5是k5的右孩子
動態規劃之最優二叉搜尋樹
在看這張之前,最好看看我寫的 動態規劃詳解 裡面都是講理論基礎,我下面的分析都是在此基礎上進展的。給定乙個由n個互異的關鍵字組成的序列k k1,k2,kn 且關鍵字有序 因此有k1 k2 kn 從這些關鍵字中構造一棵二叉查詢樹。對每個關鍵字ki,一次搜尋為ki的概率是pi。某些搜尋的值可能不在k內,...
動態規劃之最優二叉搜尋樹
最優二叉搜尋樹簡介 舉例以及詳細分析 塊測試結果 1 概念引入 基於統計先驗知識,我們可統計出乙個數表 集合 中各元素的查詢概率,理解為集合各元素的出現頻率。比如中文輸入法字型檔中各詞條 單字 片語等 的先驗概率,針對使用者習慣可以自動調整詞頻 所謂動態調頻 高頻先現原則,以減少使用者翻查次數。這就...
動態規劃之最優二叉搜尋樹(演算法導論)
1 一些概念 二叉搜尋樹 在二叉樹中,對任意的節點x其左子樹的所有節點都不大於x.key,其右子樹的所有節點都不小於x.key。滿足此條件的二叉樹稱為二叉搜尋樹。對二叉搜尋樹進行中序遍歷將會得到乙個單調遞增的數列。最優二叉樹 在二叉樹中,不同的節點都有不同的訪問頻率。為了減少查詢某個節點所需要遍歷的...