题目链接
英文链接:https://leetcode.com/problems/unique-binary-search-trees-ii/
中文链接:https://leetcode-cn.com/problems/unique-binary-search-trees-ii/
题目详述
给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。
示例:
1 | 输入: 3 |
题目详解
LeetCode96-不同的二叉搜索树 是求以 1 … n 为节点组成的二叉搜索树的方案种数,而本题则是求出所有的方案。解题思路是一致的。
方法一:直接进行搜索。
- 传入两个参数,用于表示范围,便于直接生成结点。
1 | public class LeetCode_00095 { |
方法二:动态规划
- 外层循环代表从
dp[1]
推进到dp[n]
。 - 内层循环用于计算当前
dp[i]
。 dp[i]
的左子树部分,它是由 1 … j - 1 的结点生成的,可以直接复用之前生成的二叉搜索树。dp[i]
的右子树部分,它是由 j + 1 … i 的结点生成的,运用之前生成的二叉搜索树的结构,加上偏移量 j 后得到新的二叉搜索树。
1 | public class LeetCode_00095 { |