博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeeCode - Unique Binary Search Trees
阅读量:6040 次
发布时间:2019-06-20

本文共 1464 字,大约阅读时间需要 4 分钟。

题目:

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.

1         3     3      2      1    \       /     /      / \      \     3     2     1      1   3      2    /     /       \                 \   2     1         2                 3

思路:

找规律

1. 没有节点,BST (Binary Search Tree)为1个, 即空树

2. 有一个节点,BST为1个,即自身为根节点

3. 有二个节点,BST为2个,1为root,左为空,右为2;2为root,左为1,右为空,其实就是dp[0]*dp[1] + dp[1]*dp[0]

      1                  2

        \               /

         2            1

4. 有三个节点

 1               1                  2                       3             3  \                \               /    \                  /              /    3               2              1       3             2             1 /                   \                                  /                 \ 2                      3                               1                    2

可以推出dp[3] = dp[0]*dp[2] + dp[1]*dp[1] + dp[2]*dp[0]

package bst;public class UniqueBinarySearchTrees {    public int numTrees(int n) {        int[] dp = new int[n + 1];        dp[0] = 1;        dp[1] = 1;        for (int i = 2; i <= n; ++i) {            for (int j = 0; j < i; ++j) {                dp[i] += dp[j] * dp[i - 1 - j];            }        }        return dp[n];    }        public static void main(String[] args) {        // TODO Auto-generated method stub        UniqueBinarySearchTrees u = new UniqueBinarySearchTrees();        System.out.println(u.numTrees(3));    }}

 

转载地址:http://csrhx.baihongyu.com/

你可能感兴趣的文章
MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
查看>>
c# 入门 例子
查看>>
HP Designjet 800PS 日常维护
查看>>
rhel7使用fdisk分区时无法使用全部分区的解决办法
查看>>
Docker 清理命令
查看>>
利用NRPE外部构件监控远程主机
查看>>
使用模块化编译缩小 apk 体积
查看>>
router-link传参
查看>>
ios之UISlider
查看>>
短信验证流程
查看>>
php 使用htmlspecialchars() 和strip_tags函数过滤HTML标签的区别
查看>>
OpenCV Error: Assertion failed (data0.dims <= 2 && type == 5 && K > 0) in cv::kmeans
查看>>
python string 之 format
查看>>
树形DP 复习
查看>>
Vuex随笔
查看>>
crontab 不执行
查看>>
避免用for循环写数据
查看>>
Dijkstra(变形) POJ 1797 Heavy Transportation
查看>>
关于Webpack详述系列文章 (第三篇)
查看>>
关于Webpack详述系列文章 (第四篇)
查看>>