Skip to content

Latest commit

 

History

History
57 lines (47 loc) · 1.07 KB

File metadata and controls

57 lines (47 loc) · 1.07 KB

96. 不同的二叉搜索树

给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

示例:

输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

题解 (Ruby)

1. 动态规划

# @param {Integer} n
# @return {Integer}
def num_trees(n)
    dp = [0] * (n + 1)
    dp[0] = 1

    for i in 1..n
        for j in 1..i
            dp[i] += dp[j - 1] * dp[i - j]
        end
    end

    return dp[n]
end

题解 (Rust)

1. 动态规划

impl Solution {
    pub fn num_trees(n: i32) -> i32 {
        let n = n as usize;
        let mut dp = vec![0; n + 1];
        dp[0] = 1;

        for i in 1..=n {
            for j in 1..=i {
                dp[i] += dp[j - 1] * dp[i - j];
            }
        }

        dp[n]
    }
}