[LeetCode]: 96: Unique Binary Search Trees
题目:
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相关推荐
- 【卡塔兰数】LeetCode 96. Unique Binary Search Trees
LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...
- LeetCode 96. Unique Binary Search Trees
96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha ...
- [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 ...
- 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/ 题解 题是 ...
- 【重点 递归构造二叉树】LeetCode 95. Unique Binary Search Trees II
LeetCode 95. Unique Binary Search Trees II 本博客转载自:[1]https://segmentfault.com/a/1190000007443961 [2] ...
- 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 ...
- LeetCode:96. Unique Binary Search Trees(找出独一无二搜索树)
文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼:我热爱编程.热爱算法.热爱开源.所有源码在我的个人github :这博客是记录我学习的点点滴滴,如果您对 Python.Java.AI ...
- 96. Unique Binary Search Trees 不同的二叉搜索树
Title 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1\ ...
- 96. Unique Binary Search Trees【力扣】
题意理解 给定一个整数n,从1到n序列可组成多少个不同的二叉树? 问题分析 用动态规划 状态量是dp[i]表示i个整数可组成不同的二叉树的数量. 状态转移方程 dp[i] = sum(dp[j-1] ...
最新文章
- 机器学习面试知识点汇总(Machine Learning Core Concepts Collection)
- Android监听程序自身被卸载
- list contains方法_Java中给List去重的5种方法,谁的效率更高?
- 为进大厂刷爆算法题,最后却倒在了基础题上?太苦了!
- 100c之23:两个平方数
- 【ROS学习笔记】(一)常用命令的解释与举例
- 陀螺仪、加速计、磁力计等传感器汇总
- Oracle中Minus的使用
- 自动注册11平台账号
- 路由器原理和路由协议介绍
- RAP简介教程常用规则
- 苏州园林年卡 办理与使用 附 苏州园林门票价格
- watir-webdriver相关知识
- 计算机显卡维修,显卡的各种故障维修方法
- 联想超级计算机盈利,联想集团2019年营收 联想集团全年营收多少
- riplus子主题极致美化。Riplus子主题QIW主题二开美化主题免费下载
- java打字游戏_Java打字游戏
- 转载:物联网平台概述
- 正则表达式------基础
- 软考高级-系统架构师-案例分析-架构设计真题考点汇总