博客
关于我
【热题 HOT100】96. 不同的二叉搜索树
阅读量:502 次
发布时间:2019-03-07

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

1.题目

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

2.思路分析

  • 动态规划
  • 对于只有空树和一个节点的情况,那么就只有一种情况
  • 给定序列 1 ⋯ n,我们选择数字 i 作为根,则根为 i 的所有二叉搜索树的集合是左子树集合和右子树集合的笛卡尔积,对于笛卡尔积中的每个元素,加上根节点之后形成完整的二叉搜索树。
  • 即就是从2到n,将序列分成两个,对于分开的两个部分称为左右子树,然后将左右自己组合(笛卡尔积)
  • 举例而言,创建以 3 为根、长度为 7 的不同二叉搜索树,整个序列是 [1, 2, 3, 4, 5, 6, 7],我们需要从左子序列 [1, 2]构建左子树,从右子序列 [4, 5, 6, 7]构建右子树,然后将它们组合(即笛卡尔积)。
  • 利用动态规划的思想,将对应的都写入vector中,返回G[n]即可。

3.代码展示

class Solution {
   public:    int numTrees(int n) {
           vector<int> G(n+1, 0);        G[0] = 1;        G[1] = 1;        for(int i = 2; i <= n; ++i){
               for(int j = 1; j <= i; ++j){
                   G[i] += G[j-1]*G[i-j];            }        }        return G[n];    }};

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

你可能感兴趣的文章
xshell解决文本粘贴格式错误
查看>>
JAVA BigInteger和BigDecimal类常用方式
查看>>
机器学习全教程
查看>>
idea在连接mysql数据库时区错误
查看>>
工程经济—建设工程定额
查看>>
1Z204050、施工质量不合格的处理
查看>>
【字节网盘】九款超好看不同页面404源码
查看>>
两款404页面自动跳转源码html
查看>>
MacOS 应对系统无响应的方法
查看>>
Mac隐藏辅助功能|自定义苹果Mac显示器
查看>>
ActivityNotFoundException异常错误
查看>>
git远程仓库切换
查看>>
学习Vue.js2.0(国外视频教程)
查看>>
解决微信小程序项目导入的问题:app.json 未找到、 __wxConfig is not defined
查看>>
非迅捷|PDF、Word、PPT、Excel、图片等互相在线转换:免费、简单、快速、零错误、无套路
查看>>
Java面试题整理,闭关在家37天“吃透”这份345页PDF,纯干货
查看>>
word文档手写字母总会大写问题
查看>>
laravel server error 服务器内部错误
查看>>
iJ配置Maven环境详解
查看>>
面试题 08.01. 三步问题
查看>>