LeetCode 95 不同的二叉搜尋樹 II

2021-10-03 10:03:46 字數 818 閱讀 4565

參考自詳細通俗的思路分析,多解法

利用查詢二叉樹的性質。左子樹的所有值小於根節點,右子樹的所有值大於根節點。

所以如果求 1…n 的所有可能。

我們只需要把 1 作為根節點,[ ] 空作為左子樹,[ 2 … n ] 的所有可能作為右子樹。

2 作為根節點,[ 1 ] 作為左子樹,[ 3…n ] 的所有可能作為右子樹。

3 作為根節點,[ 1 2 ] 的所有可能作為左子樹,[ 4 … n ] 的所有可能作為右子樹,然後左子樹和右子樹兩兩組合。

4 作為根節點,[ 1 2 3 ] 的所有可能作為左子樹,[ 5 … n ] 的所有可能作為右子樹,然後左子樹和右子樹兩兩組合。

n 作為根節點,[ 1… n ] 的所有可能作為左子樹,[ ] 作為右子樹。

至於,[ 2 … n ] 的所有可能以及 [ 4 … n ] 以及其他情況的所有可能,可以利用上邊的方法,把每個數字作為

根節點,然後把所有可能的左子樹和右子樹組合起來即可。

特判情況

如果是n==0,那就返回 null。

遞迴邊界

class

solution

private

: vector>

getans

(int start,

int end)

//只有乙個數字,當前數字作為一顆樹加入到結果中

if(start==end)

//嘗試每個陣列作為根節點

for(

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

}return ans;}}

;

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

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

Leetcode95 不同的二叉搜尋樹 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 2...