diff --git a/.vscode/settings.json b/.vscode/settings.json
index 54c94bd..fd3e5a1 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -36,5 +36,16 @@
"zhan",
"zhong",
"zhuan"
- ]
+ ],
+ "standard.options": {
+ "globals": [
+ "$",
+ "jQuery",
+ "fetch"
+ ],
+ "usePackageJson": true,
+ "env": {
+ "jest": true
+ }
+ }
}
\ No newline at end of file
diff --git a/README.md b/README.md
index 506afc7..bcc8a3a 100644
--- a/README.md
+++ b/README.md
@@ -516,6 +516,10 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
- LeetCode 108. 将有序数组转换为二叉搜索树
- LintCode 106. 有序链表转换为二叉搜索树
+- [不同的二叉搜索树](src/tree/unique-binary-search-trees.js)
+
+ - LeetCode 96. 不同的二叉搜索树
+
## 链表
- [合并 K 个排序链表](src/list/merge-k-sorted-lists.js)
diff --git a/src/tree/unique-binary-search-trees.js b/src/tree/unique-binary-search-trees.js
new file mode 100644
index 0000000..257c069
--- /dev/null
+++ b/src/tree/unique-binary-search-trees.js
@@ -0,0 +1,12 @@
+// 卡塔兰数
+/**
+ * @param {number} n
+ * @return {number}
+ */
+export const numTrees = function (n) {
+ let C = 1
+ for (let i = 0; i < n; ++i) {
+ C = C * 2 * (2 * i + 1) / (i + 2)
+ }
+ return C
+}
diff --git a/test/tree/unique-binary-search-trees.test.js b/test/tree/unique-binary-search-trees.test.js
new file mode 100644
index 0000000..9fefff8
--- /dev/null
+++ b/test/tree/unique-binary-search-trees.test.js
@@ -0,0 +1,5 @@
+import { numTrees } from '../../src/tree/unique-binary-search-trees'
+
+test('不同的二叉搜索树', () => {
+ expect(numTrees(3)).toBe(5)
+})