前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 题目解析之 Unique Binary Search Trees

Leetcode 题目解析之 Unique Binary Search Trees

原创
作者头像
ruochen
发布2022-02-28 21:09:28
1.2K0
发布2022-02-28 21:09:28
举报

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

For example,

Given n = 3, there are a total of 5 unique BST's.

代码语言:javascript
复制
  1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

以n为根结点的二叉树个数=左子树个数*右子树个数

用数组recordn+1记录以0~n的情况,自底向上,否则会超时

代码语言:javascript
复制
    public int numTrees(int n) {
        if (n == 1 || n == 2) {
            return n;
        }
        // record[0]没有用,所以长度是n+1
        // 使用数组,从下向上保存结果,能够节省时间,否则会超时
        int[] record = new int[n + 1];
        record[0] = 1;
        record[1] = 1; // 1个元素时,情况为1
        record[2] = 2; // 2个元素时,情况为2
        for (int i = 3; i <= n; i++) {
            int tmp = 0;
            for (int k = 0; k < i; k++) {
                // 以n为根结点的二叉树个数=左结点的二叉树个数*右结点的二叉树个数
                // 题目所求要包括所有情况,分别以1~n为根结点
                tmp += (record[k] * record[i - k - 1]);
            }
            // 记录1~i时,BST的个数
            record[i] = tmp;
        }
        return record[n];
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档