演算法導論 最優二叉搜尋樹

2021-07-23 08:53:24 字數 533 閱讀 4946

/*

len是關鍵字的數目

p[i]是ki關鍵字的概率,q[i]是di偽關鍵字的概率

w是子樹的概率之和-->子樹作為乙個節點的子樹後,depth+1,對總體的期望代價相當於加上子樹概率之和

e是子樹的期望代價-->(葉子->子樹->更大的子樹->完整的樹

root是樹根

*//*

e[1][1]代表乙個關鍵字建成的最優二叉搜尋樹->子問題最優解

e[1][x]代表x個關鍵字建成的最優二叉搜尋樹->自底向上構建問題最優解

......

e[1][n]代表所有關鍵字建成的最優二叉搜尋樹

*///建樹要保持k1...kn的順序,類似matrix最優括號化問題

//optimalbst根不一定為概率最大的,樹的高度也不一定為最矮的,評判優劣的標準為期望代價的大小

for (int len = 1;len <= n;++len)

} }

}

動態規劃之最優二叉搜尋樹(演算法導論)

1 一些概念 二叉搜尋樹 在二叉樹中,對任意的節點x其左子樹的所有節點都不大於x.key,其右子樹的所有節點都不小於x.key。滿足此條件的二叉樹稱為二叉搜尋樹。對二叉搜尋樹進行中序遍歷將會得到乙個單調遞增的數列。最優二叉樹 在二叉樹中,不同的節點都有不同的訪問頻率。為了減少查詢某個節點所需要遍歷的...

演算法導論程式39 最優二叉搜尋樹(Python)

最優二叉搜尋樹 給定乙個n個不同關鍵字的已排序的序列k 因此k1有些要搜尋的值可能不在k中,因此,我們還有n 1個 偽關鍵字 d0,d1,d2,dn表示不在k中的值。d0表示所有小於k1的值,dn表示所有大於kn的值,對i 1,2,n 1偽關鍵字di表示所有在ki和k i 1 之間的值。對每個偽關鍵...

演算法導論 二叉搜尋樹

搜尋樹資料結構支援許多動態集合操作,包括search minimum maximum predecessor successor insert和delete等。因此,我們使用一棵搜尋樹既可以作為乙個字典又可以作為乙個優先佇列。二叉搜尋樹上的基本操作所花費的時間與這棵樹的高度成正比。對於乙個有n個結點...