95 不同的二叉搜尋樹 II,動態規劃

2021-10-08 11:55:02 字數 969 閱讀 8238

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

/ / \

2 1 2 3

0 <= n <= 8
思路:

i列舉1~n當根結點,左子樹就是1 ~ i-1 ,右子樹就是i+1 ~ n

難點在於如何儲存每棵樹,看了別人的解析後,知道,左子樹可能有多個,

右子樹也可能有多個,左子樹和右子樹兩兩匹配,使用vector存放左右子樹

然後兩兩匹配

class

solution

vector>

build

(int lo,

int hi);}

vector> ans;

if(lo == hi)

for(

int i = lo; i <= hi; i++)}

}return ans;}}

;

class

solution

vector>

build

(int lo,

int hi);}

vector> ans;

if(lo == hi)

for(

int i = lo; i <= hi; i++)}

}return ans;}}

;

95 不同的二叉搜尋樹 II

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

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

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