【LeetCode with Python】 Unique Binary Search Trees
来源:互联网 发布:thinkpad8 win10优化 编辑:程序博客网 时间:2024/05/16 17:41
博客域名:http://www.xnerv.wang
原题页面:https://oj.leetcode.com/problems/unique-binary-search-trees/
题目类型:
难度评价:★
本文地址:http://blog.csdn.net/nerv3x3/article/details/37339649
原题页面:https://oj.leetcode.com/problems/unique-binary-search-trees/
题目类型:
难度评价:★
本文地址:http://blog.csdn.net/nerv3x3/article/details/37339649
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
给点节点数,求出能构造出符合二叉搜索树定义的二叉树数量。
搜索算法。用递归来构建搜索,每次递归时,假设当前子树可分配节点数为n,那就列举每一种分配方案(子树根节点占用一个,第一种方案是左子树分配0个节点,右子树分配n-1个结点;第二种方案左子树分配1个节点,右子树分配n-2个节点;……;最后左子树分配n-1个节点,右子树分配0个节点)并继续子递归。最后累加各个分配方案可以得到的二叉树数量,作为本次递归结果返回。
空间复杂度与时间复杂度待分析。
搜索算法一般都可以通过动态规划DP来避免重复的子问题求解,以后有时间了会用DP重新做一次本题。
class Solution: def doNumTrees(self, n): if n <= 1: return 1 total = 0 for i in range(0, n): left = i right = n - left - 1 # 1 as the sub-root node total += (self.doNumTrees(left) * self.doNumTrees(right)) return total # @return an integer def numTrees(self, n): if 0 == n: return 0 return self.doNumTrees(n)
0 0
- 【LeetCode with Python】 Unique Binary Search Trees
- 【LeetCode】【Python题解】Unique Binary Search Trees
- Unique Binary Search Trees II Leetcode Python
- 【Leetcode】【python】Unique Binary Search Trees
- 【Leetcode】【python】Unique Binary Search Trees II
- LeetCode: Unique Binary Search Trees
- LeetCode : Unique Binary Search Trees
- [Leetcode] Unique Binary Search Trees
- [LeetCode]Unique Binary Search Trees
- LeetCode Unique Binary Search Trees
- Leetcode: Unique Binary Search Trees
- LeetCode-Unique Binary Search Trees
- [leetcode] Unique Binary Search Trees
- LeetCode - Unique Binary Search Trees
- [LeetCode] Unique Binary Search Trees
- 【Leetcode】Unique Binary Search Trees
- Leetcode: Unique Binary Search Trees
- 【LeetCode】Unique Binary Search Trees
- final 、 abstract类
- sim900特性
- 【LeetCode with Python】 Two Sum
- MFC启动其他MFC进程,并传递参数,同时获取参数
- Problem 2 ---- euler
- 【LeetCode with Python】 Unique Binary Search Trees
- FastReport配置打印预览按钮_C++
- Android ViewPager学习之 使用详解
- Android出现java.net.SocketException: Permission denied的问题
- 使用ExtJS禁止刷新页面
- 重构中对设计模式的反思
- ubuntu下的JDK和ant安装与环境变量的配置
- JFreechart图表ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);// 问题出在第二个参
- Android共享数据ContentProvider的使用