leetcode【不同的二叉搜索树】

简介: leetcode【不同的二叉搜索树】

正文


简介leetcode 【不同的二叉搜索树】


题目描述#


给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?


输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3


我的代码#


import java.util.HashMap;
import java.util.Map;
class Solution {
        Map<Integer, Integer> map = new HashMap<>(16);
    public int numTrees(int n) {
        Integer integer = map.get(n);
        if (null != integer) {
            return integer;
        }
        if (n == 0 || n == 1) {
            return 1;
        } else if (n == 2) {
            return 2;
        } else if (n == 3) {
            return 5;
        } else {
            int max = n / 2;
            //System.out.println(max);
            int sum = 0;
            for (int i = 0; i < max; i++) {
                sum += 2 * numTrees(i) * numTrees(n - 1 - i);
            }
            if (n % 2 == 1) {
                sum += (int) Math.pow(numTrees(n / 2), 2);
            }
            map.put(n, sum);
            return sum;
        }
    }
}


我的分析过程#


11.jpg

相关文章
|
2月前
【LeetCode 45】701.二叉搜索树中的插入操作
【LeetCode 45】701.二叉搜索树中的插入操作
11 1
|
2月前
【LeetCode 44】235.二叉搜索树的最近公共祖先
【LeetCode 44】235.二叉搜索树的最近公共祖先
19 1
|
6月前
|
机器学习/深度学习 存储 算法
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
LeetCode 题目 95:从递归到动态规划实现 不同的二叉搜索树 II
|
2月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
43 0
|
2月前
【LeetCode 47】669.修剪二叉搜索树
【LeetCode 47】669.修剪二叉搜索树
11 0
|
2月前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
21 0
|
2月前
【LeetCode 42】501.二叉搜索树中的众数
【LeetCode 42】501.二叉搜索树中的众数
10 0
|
2月前
【LeetCode 41】530.二叉搜索树的最小绝对差
【LeetCode 41】530.二叉搜索树的最小绝对差
13 0
|
2月前
【LeetCode 40】98.验证二叉搜索树
【LeetCode 40】98.验证二叉搜索树
16 0
|
2月前
【LeetCode 39】700.二叉搜索树中的搜索
【LeetCode 39】700.二叉搜索树中的搜索
16 0