二元搜尋樹(Binary Search Tree),也稱有序二元樹(ordered binary tree),排序二元樹(sorted binary tree),是指一棵空樹或者具有下列性質的二元樹:
1. 若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;
2. 任意節點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;
3. 任意節點的左、右子樹也分別為二元搜尋樹。
4. 沒有鍵值相等的節點(no duplicate nodes)。
給你 n 個相異的整數,你能找到多少棵由這 n 個整數組成的二元搜尋樹?
舉例來說,由{1, 2, 3} 這 3 個數所組成的二元搜尋樹共有以下5種。
.png)
![]()
每組測資有一個正整數 n (0 < n < 1000),代表那種二元搜尋樹由 n 個相異的整數所組成。
對於每組測資請單行輸出一個整數,代表符合條件的二元搜尋樹個數。
由於答案可能很大,請輸出答案除以 100000007 的餘數。