0x00 题目
给你一个整数 n
 求恰由 n 个节点组成 且节点值从 1 到 n 互不相同的
 二叉搜索树 有多少种?
 返回满足题意的二叉搜索树的 种数
0x01 思路
假设 n 个节点存在二叉排序树的个数是 G (n)
 令 f(i) 为以 i 为根的二叉搜索树的个数,则
 G(n) = f(1) + f(2) + f(3) + f(4) + ... + f(n)
当 i 为根节点时
 左子树节点个数为 i-1 个
 右子树节点为 n-i,则
 f(i) = G(i−1) ∗ G(n−i)
综合两个公式可以得到 卡特兰数 公式
 G(n) = G(0) ∗ G(n−1) + G(1) ∗ (n−2) + ... + G(n−1) ∗ G(0)
0x02 解法
func numTrees(_ n: Int) -> Int {
    if n == 0 || n == 1 { return 1 }
    var array = [Int](repeating: 0, count: n+1)
    array[0] = 1
    array[1] = 1
    for i in 2...n {
        for j in 1...i {
           array[i] += (array[j-1] * array[i-j])
        }
    }
    return array[n]
}
小笔记
做笔记,一小到位
 










