package com.interview.dynamic; /** * http://www.geeksforgeeks.org/program-nth-catalan-number/ * Count number of binary search tree created for array of size n */ public class CountNumberOfTreesInBST { int countTreesRec(int numKeys) { if (numKeys <=1) { return(1); } else { int sum = 0; int left, right, root; for (root=1; root<=numKeys; root++) { left = countTreesRec(root - 1); right = countTreesRec(numKeys - root); sum += left*right; } return(sum); } } public int countTrees(int n){ int T[] = new int[n+1]; T[0] = 1; T[1] = 1; for(int i=2; i <= n; i++){ for(int j=0; j <i; j++){ T[i] += T[j]*T[i-j-1]; } } return T[n]; } public static void main(String args[]){ CountNumberOfTreesInBST cnt = new CountNumberOfTreesInBST(); System.out.println(cnt.countTrees(3)); System.out.println(cnt.countTrees(4)); } }