博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【题解】【BST】【Leetcode】Unique Binary Search Trees
阅读量:5856 次
发布时间:2019-06-19

本文共 1158 字,大约阅读时间需要 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
 
思路:
遇到二叉树,多半是分为左右子树两个问题递归下去。
由序列[1,…,m]和[i+1,…,i+m]能够构造BST的数目是相同的,不妨将原问题转化为求n个连续的数能够构成BST的数目
考虑分别以1,2,…i…,n为root,左子树由1~i-1这i-1个数构成,右子树有i+1~n这n-i-2个数构成,左右子树数目相乘即可,然后再累加
 
代码:
1 int numUniTrees(int n, vector
&res){ 2 if(res[n] != -1) 3 return res[n]; 4 5 if(n == 0||n == 1){ 6 res[n] = 1; 7 return res[n]; 8 } 9 10 int num = 0;11 for(int i = 0; i < n; i++){12 //num += numTrees(i)*numTrees(n-i-1);//剥离出来一个函数之后,注意更改函数名13 num += numUniTrees(i, res) * numUniTrees(n-i-1, res);14 }15 res[n] = num;16 return res[n];17 }18 int numTrees(int n) {19 if(n < 0) 20 return 0;21 vector
res(n+1, -1);22 return numUniTrees(n, res);23 }

 

转载于:https://www.cnblogs.com/wei-li/p/UniqueBinarySearchTrees.html

你可能感兴趣的文章
CentOS 7使用dnf安装Memcached以及启动、停止、开机启动等设置
查看>>
页面上通过地址栏传值时出现乱码的两种解决方法
查看>>
c++下面的一个单例
查看>>
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
查看>>
dev gridControl 自定义绘制列头颜色
查看>>
运行时数据调试
查看>>
京东的交易系统 之 高并发架构分享
查看>>
网站大并发处理解决方案
查看>>
分布式计算
查看>>
cocoapods管理第三方开源库
查看>>
pvp实时对战,同步机制,针对掉线简单分析
查看>>
EBook
查看>>
(用了map) Registration system
查看>>
C/S架构和B/S架构的概念和区别
查看>>
知识的深度跟知识的广度
查看>>
Blue Jeans(包含两个查找字符串的重要函数)
查看>>
嵌入式软件设计第12次实验报告
查看>>
冲刺第二周第七天
查看>>
Mac中建立SVN服务器
查看>>
JS学习专辑(4)- 变量作用域和语句
查看>>