Browse Source

feat: unique_binary_search_trees

Zhang Li 1 year ago
parent
commit
f06179ded2

+ 2 - 1
src/solutions/dp/mod.rs

@@ -9,4 +9,5 @@ mod unique_paths_2;
 mod edit_distance;
 mod climbing_stairs;
 mod edit_distance2;
-mod decode_ways;
+mod decode_ways;
+mod unique_binary_search_trees;

+ 30 - 0
src/solutions/dp/unique_binary_search_trees.rs

@@ -0,0 +1,30 @@
+struct Solution;
+
+impl Solution {
+    pub fn num_trees(n: i32) -> i32 {
+        let mut dp = vec![0; n as usize + 1];
+        dp[0] = 1;
+        dp[1] = 1;
+
+        for i in 2..=n as usize {
+            for j in 1..=i {
+                dp[i] += dp[j-1] * dp[i-j];
+            }
+        }
+
+        dp[n as usize]
+    }
+}
+
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_num_trees() {
+        let n = 3;
+        let res = Solution::num_trees(n);
+        assert_eq!(res, 5);
+    }
+}

+ 1 - 1
src/solutions/tree/mod.rs

@@ -1 +1 @@
-mod inorder_traversal;
+mod inorder_traversal;