2019 10 09 不同的二叉搜尋樹 II

2021-09-28 10:52:35 字數 1074 閱讀 1532

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

從序列 1…n 取出數字 i 並以它作為當前樹的根節點。 那麼就有 i - 1 個元素可以用來構造左子樹,而另外的 n - i 個元素可以用於構造右子樹。最後我們將會得到 g(i - 1) 棵不同的左子樹,以及 g(n - i) 棵不同的右子樹,其中 g 為卡特蘭數。

在序列 1… i-1 上重複前面的步驟來構造所有的左子樹,之後對序列 i+1…n 也這樣做以得到所有的右子樹。

就得到了根節點 i 和兩個可能的左右子樹列表, 最後一步將左右子樹和根節點鏈結起來。

c++

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

return

generate_trees(1

, n);}

vector>

generate_trees

(int start,

int end)

for(

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

}return all_trees;}}

;

不同的二叉搜尋樹

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

不同的二叉搜尋樹

leetcode演算法 演算法題 動態規劃 dp i 代表的是長度為i的序列所能構成多少個不同的二叉搜尋樹 f x,i 代表的是以x為根,長度為i所能構成的不同的二叉搜尋樹的種類 那麼dp i f 1,i f 2,i f i,i 同時f x,i 的公式也出來了1 2 3 4 x i 1 i 可以發現...

不同的二叉搜尋樹

不同的二叉搜尋樹 給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多少種?示例 輸入 3 輸出 5 解釋 給定 n 3,一共有 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3動態規劃 假設n個節點存在二叉排序樹的個數是g n 令f i 為以i為根的二叉...