95 不同的二叉搜尋樹

2021-10-23 00:00:38 字數 1496 閱讀 2943

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

示例:

輸入: 3

輸出: 5

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

1 3 3 2 1

\ / / / \

3 2 1 1 3 2

/ / \

2 1 2 3

使用dp[n]表示1-n可以用多少顆不同的二叉搜尋樹,那麼

dp[0]=1;(假設空樹也是一顆樹)

dp[1]=1;

dp[2]=2;

dp[3]=1*2+2*1+1*1;

1          1

\ \

3 2

/ \

2 3

根節點的左子樹是空,右子樹是2個節點的樹,那麼這種樹就有dp[0]dp[2]=12種。

3         3     

/ /

2 1

/ \

1 2

左子樹是2個節點的樹右子樹是空樹。所有有dp[2]*dp[0]

如果根節點為k那麼左子樹是1至k-1共k-1個節點。右側就是k+1至n,共n-k個節點。那麼一共就用dp[k-1]*dp[n-k]棵不同的樹了。

class

solution

return dp[n];}

};

給定乙個整數 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 2

/ / \

2 1 2 3

有點理解不了

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

vector>

trees

(int start,

int end)

for(

int i=start;i<=end;i++)}

}return search_tree;}}

;

95 不同的二叉搜尋樹

題目 給定乙個整數 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...

95 不同的二叉搜尋樹 II M

label dp lnr,深拷貝,遞迴左右劃分構建樹 給定乙個整數 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 種不同結構...

95 不同的二叉搜尋樹 II

二叉搜尋樹,又被稱為是二叉查詢樹 二叉排序樹,這種樹其左子樹所有節點的值均小於根節點的值,其右子樹所有節點的值均大於根節點的值,並且其左 右子樹均為二叉搜尋樹。空樹也是二叉搜尋樹。方法一 遞迴法 與這道題類似的是那道 96不同的二叉搜尋樹 在96中我們曾分析到,由於給定的節點值為1 n,是一組從小到...