LeetCode-095-不同的二叉搜索树 II

n
,请你生成并返回所有由n
1
到n
互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。二叉搜索树(Binary Search Tree):又称二叉排序树,它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
示例说明请见LeetCode官网。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-binary-search-trees-ii/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一:递归法
首先,当n为0的时候,结果是一棵空树,直接返回空的list。
当n大于0的时候,使用递归的方法来分别获取左右子树,递归过程如下:
所有节点都可以作为根节点,也就是遍历从1到n的所有值作为根节点,当前根节点为i;
然后i左边的所有的值递归调用方法作为i的左子树;
i右边的所有的值递归调用方法作为i的右子树;
最后把根节点i和相应的左右子树拼成一棵树,放到结果集中。
最后,返回结果集即为所有可能的二叉搜索树。
【每日寄语】 莫等闲,白了少年头,空悲切!