給定乙個整數 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 ;
}vectorgenerate(int left, int right)
for (int i = left; i <= right; i++) }}
return ans;
}};
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之不同的二叉搜尋樹
解題步驟 題目可以轉換為求以i 1 i n 為根節點的不同結構的二叉樹數量,然後相加就可以的出答案。假如我們以i為根節點,左子樹由 1,i 1 構成,右子樹由 i 1,n 構成。由於二叉搜尋樹左節點值小於根節點值,右節點值大於根節點值,並對所有子樹都成立,所以左子樹 1,i 1 與右子樹 i 1,n...