第95题:
给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。来源:力扣(LeetCode)
输入: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、对于利用1到n这些数来组成一棵二叉搜索树,可以组成很多种不同的二叉搜索树;
二叉搜索树需要确定一个根节点,然后他的左子树所有节点都必须小于根节点的值,右子树所有节点都必须大于根节点的值;
而且这个规则所有子树和它的左右子树都必须满足;
我们遍历数组,确定一个根节点 i ,那么他的左子树就肯定时由(1…i-1)组成,右子树一定是有(i+1…n)组成;
我们就可以递归将(1…i-1)和(i+1…n)分别组件成一棵二叉搜索树,然后将其分别作为 i 的左右子树;
这样一直递归其实最后组成的就是