Day 23 不同的二叉搜尋樹 II

2021-10-04 07:48:27 字數 1296 閱讀 6625

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

使用語言:c++

方法:遞迴

利用二叉搜尋樹的性質

左子樹的所有值小於根節點,右子樹的所有值大於根節點。

所以如果求 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 ] 以及其他情況的所有可能,可以利用上邊的方法,把每個數字作為根節點,然後把所有可能的左子樹和右子樹組合起來即可。

如果只有乙個數字,那麼所有可能就是一種情況,把該數字作為一棵樹。而如果是 [

],那就返回 null。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

vector>

search

(int start,

int end)

}return atree;}}

;

不同的二叉搜尋樹 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 種不同結構的二叉搜尋樹 以上的輸出對應以下 5 種不...

Day23 Task95 不同的二叉搜尋樹

題目描述 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 種不同結構的二叉搜尋樹 133 ...

95 不同的二叉搜尋樹 II

二叉搜尋樹,又被稱為是二叉查詢樹 二叉排序樹,這種樹其左子樹所有節點的值均小於根節點的值,其右子樹所有節點的值均大於根節點的值,並且其左 右子樹均為二叉搜尋樹。空樹也是二叉搜尋樹。方法一 遞迴法 與這道題類似的是那道 96不同的二叉搜尋樹 在96中我們曾分析到,由於給定的節點值為1 n,是一組從小到...