【Leetcode】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 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
方法(分治法)
原问题让我们生成由1到n为节点组成的二叉搜索树。那么我们可以用分治法将原问题分解
- 分解:将原问题分解为以下两个子问题,并递归求解(i为1到n的任意一个节点)
- 生成由1到i-1为节点组成的二叉搜索树
- 生成由i+1到n为节点组成的二叉搜索树
- 合并:令节点i作为根节点,令它的左右子节点分别为由(1…i-1)组成的BST和由(i+1…n)组成的BST
- 递归结束条件:start > end时,递归结束
代码
1 |
|