DifferentBinarySearchTrees题目描述:给定一个整数n,求一棵正好由n个节点组成的二叉搜索树,节点值从1到n不等,共有多少种?返回满足题意的二叉搜索树的数量。二叉搜索树(BinarySearchTree):也称为二叉排序树,它要么是一棵空树,要么是一棵二叉树,具有以下性质:如果它的左子树不为空,则左子树上所有节点的值节点小于其根节点的值;如果它的右子树不为空,则右子树上所有节点的值都大于它的根节点的值;它的左右子树也是一棵有序的二叉树。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:递归的方法首先,当n为0时,结果是一棵空树,直接返回一个空列表。当n大于0时,用递归的方法分别得到左右子树。递归过程如下:所有节点都可以作为根节点,即遍历1到n的所有值作为根节点,当前根节点为i;然后i左边的所有值作为i的左子树递归调用方法;i右边的所有值递归调用方法作为i的右子树;最后把根节点i和对应的左右子树拼成一棵树,放到结果集中。最后,返回结果集的size值为符合条件的二叉查找树的数量。说明:该方法参考了LeetCode-095-DifferentBinarySearchTreeII,提交时超时。解法一:求法表明,当整数为n时,二分查找数的结果为前面所有可能结果之和。importcom.kaesar.leetcode.TreeNode;importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_096{/***递归:方法运行时超时**@paramn*@return*/publicstaticintnumTrees(intn){//当n为0时,它是一棵空树if(n==0){return1;}返回generateTrees(1,n).size();}privatestaticList
