题目:

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

分析:

这个题需要采用动态规划的思想,即:最终解只有部分解逐一累加完成的。基于这个思路再看看本题的分析

当节点数为0的时候,返回0个解

当节点数为1的时候,返回1个解

当节点数为2的时候,返回2个解

当节点数为3的时候,返回5个解,如上图。包括1为顶点的两种解,2为顶点的1种解和3为顶点的2种解。

当节点数为4的时候,返回15个解,包括当1为顶点的5中解,2为顶点的2种解,3为顶点的2种解和4为顶点的5种解。

由此可见关于平衡二叉树子树的情况:

- 某一个点为顶点的时候,子树的个数为:左子树的个数乘以右子树的个数。

- 多个点的构成的平衡二叉树的个数应该为:其中每一个点作为顶点时其子树的个数 的和。

本题目最简便的方法是节点数从小到大依次计算,节点多的时候,将节点划分成几个小的节点组合,采用之前计算的结果

代码如下:

    public static int numTrees(int n) {switch(n){case 0:return 0; case 1:return 1;case 2:return 2;default:int[] arrResult = new int[n+1];arrResult[0] = 1;  // 零个节点时候,子树应该为零,但是为了后面左右子树相乘的计算方便,在此强置为1arrResult[1] = 1;arrResult[2] = 2;for(int i = 3;i<=n;i++){  //3个节点开始采用动态规划的方法int intResultTemp = 0;for(int j = 0 ; j<i;j++ ){intResultTemp = intResultTemp + (arrResult[j]*arrResult[i-j-1]);   //左子树数目乘以右子树数目
                    }arrResult[i] = intResultTemp;}return arrResult[n];          }}

转载于:https://www.cnblogs.com/savageclc26/p/4859065.html

[LeetCode]: 96: Unique Binary Search Trees相关推荐

  1. 【卡塔兰数】LeetCode 96. Unique Binary Search Trees

    LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...

  2. LeetCode 96. Unique Binary Search Trees

    96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha ...

  3. [swift] LeetCode 96. Unique Binary Search Trees

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

  4. leetcode 95. Unique Binary Search Trees II | 96. Unique Binary Search Trees

    95. Unique Binary Search Trees II https://leetcode.com/problems/unique-binary-search-trees-ii/ 题解 题是 ...

  5. 【重点 递归构造二叉树】LeetCode 95. Unique Binary Search Trees II

    LeetCode 95. Unique Binary Search Trees II 本博客转载自:[1]https://segmentfault.com/a/1190000007443961 [2] ...

  6. 96. Unique Binary Search Trees(I 和 II)

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

  7. LeetCode:96. Unique Binary Search Trees(找出独一无二搜索树)

    文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼:我热爱编程.热爱算法.热爱开源.所有源码在我的个人github :这博客是记录我学习的点点滴滴,如果您对 Python.Java.AI ...

  8. 96. Unique Binary Search Trees 不同的二叉搜索树

    Title 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1\ ...

  9. 96. Unique Binary Search Trees【力扣】

    题意理解 给定一个整数n,从1到n序列可组成多少个不同的二叉树? 问题分析 用动态规划 状态量是dp[i]表示i个整数可组成不同的二叉树的数量. 状态转移方程 dp[i] = sum(dp[j-1] ...

最新文章

  1. 机器学习面试知识点汇总(Machine Learning Core Concepts Collection)
  2. Android监听程序自身被卸载
  3. list contains方法_Java中给List去重的5种方法,谁的效率更高?
  4. 为进大厂刷爆算法题,最后却倒在了基础题上?太苦了!
  5. 100c之23:两个平方数
  6. 【ROS学习笔记】(一)常用命令的解释与举例
  7. 陀螺仪、加速计、磁力计等传感器汇总
  8. Oracle中Minus的使用
  9. 自动注册11平台账号
  10. 路由器原理和路由协议介绍
  11. RAP简介教程常用规则
  12. 苏州园林年卡 办理与使用 附 苏州园林门票价格
  13. watir-webdriver相关知识
  14. 计算机显卡维修,显卡的各种故障维修方法
  15. 联想超级计算机盈利,联想集团2019年营收 联想集团全年营收多少
  16. riplus子主题极致美化。Riplus子主题QIW主题二开美化主题免费下载
  17. java打字游戏_Java打字游戏
  18. 转载:物联网平台概述
  19. 正则表达式------基础
  20. 软考高级-系统架构师-案例分析-架构设计真题考点汇总

热门文章

  1. 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
  2. phpstudy下的mysql升级
  3. OSPF多区域;特殊区域;
  4. 乐刷科技-Java工程师社招面试
  5. Outlook2013/2016去掉正文中的换行符
  6. Razor视图出现重复的解决方法
  7. lightinthebox程序bug zencart
  8. C/C++结构体的区别
  9. Hadoop实践之Python(一)
  10. 深入了解java线程池