博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode96_Unique Binary Search Trees(求1到n这些节点能够组成多少种不同的二叉查找树) Java题解...
阅读量:6703 次
发布时间:2019-06-25

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

题目:

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个或是1个节点的时候。仅仅有一种。n个节点的时候有f(n)种:

左边能够有n-1个节点,右边0个节点,依据对称性能够左右互换。这时候有2*f(n-1)*f(0);

一边1个,还有一边n-2个,这时候有2*f(1)*f(n-2);

一边两个,一边N-3个,这时候有2*f(2)*f(n-3);

。。。

。。。

假设n为奇数,两边都是n/2个。这时候有f(n/2)*f(n/2),假设n为偶数,一边n/2一边(n/2+1)个,为2*f(n/2)*f(n/2+1);

代码:

public static int numTrees(int n) {    	 if(n==1||n==0)    		 return 1;    	 int sum=0;    	 if(n%2==0)    	 {    		 for(int k=n-1;k>=n/2;k--)        	 {        		 sum+=2*numTrees(k)*numTrees(n-1-k);        	 }        	 return sum;    	     	 }    	 else {    		 for(int k=n-1;k>n/2;k--)        	 {        		 sum+=2*numTrees(k)*numTrees(n-1-k);        	 }        	 return sum+numTrees(n/2)*numTrees(n/2);		}            }

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

你可能感兴趣的文章
Http请求首部Accept-Language
查看>>
手拉手教你实现一门编程语言 Enkel, 系列 14
查看>>
css实现图片背景填充的正六边形
查看>>
Android反编译及破解API协议 记录1
查看>>
LocalBroadcastManager源码剖析
查看>>
springmvc + mybatis + ehcache + redis 分布式 架构
查看>>
如何打通CMDB,实现就近访问
查看>>
网络字体(Web font)文件格式及兼容性说明
查看>>
Unity3D——Transform的Position和LocalPosition
查看>>
回流 与 重绘
查看>>
分分钟学会用Python爬取天气预报
查看>>
领域驱动设计DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(实现经销商上下文领域层之POCO模型)...
查看>>
Go Web之Gin框架 启动程序之后程序直接停止的问题解决
查看>>
Swift之UILabel +使用讲解+富文本+自适应高度
查看>>
Shiro学习笔记(三)源码解析
查看>>
一款Android App升级库
查看>>
算法与数据结构1800题 图
查看>>
Manjaro Linux 配置文档
查看>>
前端工程化、模块化方案教程大全,现代前端高手进阶必经之路(欢迎收藏)...
查看>>
sencha-touch.js MIUI Android 8.0兼容性问题
查看>>