不同的二叉搜尋樹(遞迴實現)

2021-10-09 12:25:11 字數 749 閱讀 2256

給定乙個整數 n,求以 1 … n 為節點組成的二叉搜尋樹有多少種?

示例:輸入: 3

輸出: 5

解釋:給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹:

1、遞迴問題切記一定不要跳入遞迴,只從巨集觀上考慮問題;

2、求n個節點的所有二叉搜尋樹的數量,只需要將以1、2、… n為根節點的所有二叉搜尋樹的數量相加;

3、求以 i 為根節點的所有二叉搜尋樹的數量 = 左子樹的數量 * 右子樹的數量

class

solution

// 遞迴求n個節點的所有搜尋二叉樹的數量

return

treecount

(n);

}/**

* 求n個節點的所有搜尋二叉樹的數量

*/public

inttreecount

(int n)

// 當只有1個節點時,返回1

if(n ==1)

// n個節點的所有搜尋二叉樹的數量

int count =0;

// 求以i為根節點的所有二叉搜尋樹的數量

for(

int i =

1; i <= n; i ++

)// 返回總數量

return count;

}}

二叉搜尋樹(遞迴實現)

include include include using namespace std template class bst node node node node root int count public bst bst intsize bool isempty int main test re...

LeetCode 不同的二叉搜尋樹II(遞迴)

給定乙個整數 n,生成所有由 1 n 為節點所組成的二叉搜尋樹。示例 輸入 3 輸出 1,null,3,2 3,2,null,1 3,1,null,null,2 2,1,3 1,null,2,null,3 解釋 以上的輸出對應以下 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 ...

不同的二叉搜尋樹

題目 力扣 解題思路 可以看注釋 class solution return helper choice,k choice表示選擇,按大小順序排列,k表示取第k個序列,從1開始計數 public string helper listchoice,int k 以某一元素開頭的序列個數,一共有n n個 ...