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

2021-09-11 02:10:17 字數 1107 閱讀 8388

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

思路分析:請先翻閱 leetcode 不同的二叉搜尋樹

本題就是要將上一題所求的數目的二叉搜尋樹進行構建出來。在上一題就說過二叉搜尋樹就是中序遍歷是遞增的序列,那麼我們需要構建的二叉樹搜尋樹的中序遍歷一定是(1,2,3,…,n)。

和上乙個題一樣,通過迴圈歷遍每乙個元素。以這個元素i作為根節點,那麼比它小的元素就只能是屬於它的左子樹,比它大的節點屬於它的右子樹。

那麼就要將左子樹(1,i-1)、右子樹(i+1,n)的所有情況列舉出來,那麼這就構成了遞迴定義。求完了左、右子樹後在將他合併起來就可以構成以元素i為根節點的二叉搜尋樹。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

else}}

} return result;

} vectorgeneratetrees(int n)

return createbst(1, n);//開始構建

leetcode不同的二叉搜尋樹

1.動態規劃 對於有序娛樂1 n構建二叉搜尋樹,我們可以遍歷,對數字i,將i作樹根,則1 i 1構成其左子樹,i 1 n構成其右子樹。設g n 長度為n的序列構成的二叉搜尋樹的個數 f i 以i為根節點的二叉搜尋樹個數 得到 g n f 1 f 2 f n 對於邊界值,即n 0或1時,分別對應空樹和...

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 ...

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 ...