class BSTRecursive{ static int[] p; // probabilities -- values set else where public static double C(int Left,int Right) { // assume Left <= Right if (Left == Right) return p[Left]; double sum = 0.0; // sum probabilities for(int j = Left; j <= Right; j++) sum = sum + p[j]; double min_cost = Integer.MAX_VALUE; for (int i = Left; i <= Right; i++) { double this_cost = sum + C(Left,i-1) + C(i+1,Right); min_cost = Math.min(this_cost, min_cost); } return min_cost; } }