95 不同的二叉搜尋樹 II

2021-09-25 05:53:34 字數 590 閱讀 2058

二叉搜尋樹,又被稱為是二叉查詢樹、二叉排序樹,這種樹其左子樹所有節點的值均小於根節點的值,其右子樹所有節點的值均大於根節點的值,並且其左、右子樹均為二叉搜尋樹。

空樹也是二叉搜尋樹。

方法一:遞迴法

與這道題類似的是那道「96不同的二叉搜尋樹」(

在96中我們曾分析到,由於給定的節點值為1~n,是一組從小到大順序排列的資料,其中,任意乙個值均可以作為根節點出現,記為 i,而 i 的取值範圍為1 ~ n。

我們可以採用遞迴的想法,遍歷所有節點值,將其作為根節點,當以 i 為根節點時,為了滿足搜尋樹的性質,其左子樹必定有1 ~ i-1 構成,右子樹必定由 i+1 ~ n 構成。然後對於左子樹的所有節點數1~ i-1遞迴地也構造成二叉搜尋樹,同理,右子樹類似。

vector>

generatetrees

(int n)

vector>

fun(int start, int end)

;for

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

return vec;

}

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

95 不同的二叉搜尋樹 II

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