算法课上老师讲的最优二叉搜索树,自己又查了些资料才看明白。这篇只记录下自己用java的实现和自己的一些细节的理解。想学习整个算法的可以参照 https://blog.csdn.net/zhangyifei521/article/details/50833792
package bestBinarySearchTree;
public class writebyjeff {
public static void main(String[] args) {
//p[1,5]是5个实节点的概率 p[0]不存在
double[] p = {
0,0.15,0.1,0.05,0.1,0.2
};
//q[0,5]是6个虚节点的概率
double[] q= {
0.05,0.1,0.05,0.05,0.05,0.1
};
//共5个
int n = p.length - 1;
//root[i][j]记录的是最终得出的[i,j]这个子段里的根节点
int[][] root = Optimal_BST(p,q,n<