LeetCode Unique Binary Search Trees II(递归或者dp)

问题:给出一个正整数,要求构造由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(i)=\sum_{j=0}^{i}(f(j) + f(i - 1 - j))

其中f(j)表示由1-j组成的二叉搜索树,f(i-1-j)表示j+1到i所组成的二叉搜索树。

具体代码参考:

https://github.com/wuli2496/OJ/tree/master/LeetCode/Unique%20Binary%20Search%20Trees%20II

发布了1365 篇原创文章 · 获赞 71 · 访问量 140万+

猜你喜欢

转载自blog.csdn.net/wuli2496/article/details/104582994