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