问题:给出一个正整数,要求构造由1到n组成的所有的二叉搜索树
思路:
1、递归法
在求从1到n的二叉搜索树时,枚举中间值i(1到n),求[1,i-1]和[i+1,n]分别构成的二叉搜索树,然后根据左右子树构造完整的。边界条件是对于区间[left,right]当left > right时构造单个null
2、动态规划
是以递归法为基础。用f(i)表示n为i时所有的二叉搜索树。状态转移方程为
其中f(j)表示由1-j组成的二叉搜索树,f(i-1-j)表示j+1到i所组成的二叉搜索树。
具体代码参考:
https://github.com/wuli2496/OJ/tree/master/LeetCode/Unique%20Binary%20Search%20Trees%20II