动态规划算法,计算平衡二叉搜索树的数量

发布于 2022-09-01 17:33:39 字数 39 浏览 20 评论 0

给定节点的个数n,计算能产生的不同的平衡二叉搜索树的数量T(n)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不美如何 2022-09-08 17:33:39

leetcode 96 Unique Binary Search Trees
是这题吗?
python:

class Solution(object):
    def __init__(self):
        self.map={}
    def numTrees(self, n):
        """
        :type n: int
        :rtype: int
        """
        if n<=1 :
            return 1
        if n not in self.map:
            ans=0
            for i in range(0,n):
                ans+=(self.numTrees(i)*self.numTrees(n-1-i))
            self.map[n]=ans
        else :
            ans=self.map[n]
        return ans

java:
写java的时候还不太理解动态规划,写的比较丑,自行优化

public class Solution {
    public int numTrees(int n) {
        return f(n,new HashMap<Integer, Integer>());
    }
    public int f(int n,Map<Integer,Integer> map){
        if (map.get(n)!=null) {
            return map.get(n);
        }else {
            
            if (n==1||n==0) {
                return 1;
            }else {
                int sum=0;
                for (int i = 0; i < n; i++) {
                    int left=f(i,map);
                    int right=f((n-1-i),map);
                    sum+=(left*right);
                }
                map.put(n,sum);
                return sum;
            }
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文