title: Number Of Binary Trees For Given Preorder Sequence Length
signature: fun numberOfBinaryTreesForGivenPreorderSequenceLength(n: Int): Int {
test_code: package main
  
  import kotlin.text.*
  import kotlin.math.*
  
  
  // SOLUTION CODE
  // ===================================
  PLACEHOLDER_CODE_BODY
  
  // TESTING CODE
  // ===================================
  fun validateSolution(actual:Int, expected:Int):Boolean{
    return actual.equals(expected)
  }
  fun driver(n: Int, expected:Int):String {
      try{
        if (validateSolution(PLACEHOLDER_FN_NAME(n), expected)) {
                return "PASSED"
        }
        return "FAILED"
      } catch (e: Exception){
        return e::class.simpleName as String
      }
  
  }
  
  fun main() {
      var result: String = ""
      result = driver(15, 9694845)
      println("TEST-0...${result}")
      
      result = driver(11, 58786)
      println("TEST-1...${result}")
      
      result = driver(11, 58786)
      println("TEST-2...${result}")
      
      result = driver(15, 9694845)
      println("TEST-3...${result}")
      
          
  }
  
  main()
source_py: def number_of_binary_trees_for_given_preorder_sequence_length(n):
      BT = ([0] * (n + 1))
      BT[0] = BT[1] = 1
      for i in range(2, (n + 1)):
          for j in range(i):
              BT[i] += (BT[j] * BT[((i - j) - 1)])
      return BT[n]
source_cpp: int number_of_binary_trees_for_given_preorder_sequence_length(int n) {
    int BT [ n + 1 ];
    memset ( BT, 0, sizeof ( BT ) );
    BT [ 0 ] = BT [ 1 ] = 1;
    for ( int i = 2;
    i <= n;
    ++ i ) for ( int j = 0;
    j < i;
    j ++ ) BT [ i ] += BT [ j ] * BT [ i - j - 1 ];
    return BT [ n ];
  }