Leetcode 95 96 不同的二叉搜尋樹

2021-09-12 16:42:40 字數 1658 閱讀 9035

輸入: 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

給定乙個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種?

示例:

輸入: 3

輸出: 5

解釋:給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹:

1 3 3 2 1

\ / / / \ \

3 2 1 1 3 2

/ / \ \

2 1 2 3

搜尋二叉樹(bst)的定義

若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。
給點乙個數,去構造bst.

[1, 2, 3]

可以把這個數列做左子樹和右子樹的劃分:

[1] [2, 3]

[1, 2] [3]

[1, 2] [2, 3] 又可以做左子樹和右子樹的劃分.這是乙個遞迴的過程.

把遞迴的結果構造起來,即可成為答案.

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

private listgeneratebst(int left, int right)

for (int i = left; i <= right; i++) }}

return res;}}

如果只需要數目,不需要生成具體的bst的話,只要能求出左子樹有幾種構造,右子樹有幾種構造,就可以最終確定.

而確定左子樹和右子樹的問題的時候,又可以劃分為子問題.

eg:求 [1,2,3,4] 依賴於:

[1,2,3] [2,3,4]

又依賴於:

[1,2] [2,3] [3,4]的構造有幾種.

leetcode 95 96 解題思路

95.unique binary search trees ii given an integer n,generate all structurally uniquebst s binary search trees that store values 1 n.example input 3out...

95 96不同的二叉搜尋樹I,II

96.不同的二叉搜尋樹 class solution return dp n 95.不同的二叉搜尋樹 ii vector generatetreedfs int start,int end return subtree class solution return generatetreedfs 1,...

leetcode 不同的子串行

給定乙個字串 s 和乙個字串 t 計算在 s 的子串行中 t 出現的個數。字串的乙個 子串行 是指,通過刪除一些 也可以不刪除 字元且不干擾剩餘字元相對位置所組成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是 題目資料保證答案符合 32 位帶符號整數範圍 輸入 s rabbb...