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
1.解题思路
本题求1...n可以组成的二叉搜索树的种数,我们很容易想到用动态规划来做,寻找状态,dp[i]来表示1..i个节点可以有的种数,状态转移,我们可以发现对于每一个根节点,它所能出现的二叉树种类就等于它的左子树种类*它的右子树种类,而且i来说,可以选取1..i中的任意一个节点作为根。
状态转移方程就出来了。
dp[i]+=dp[root-1]*dp[i-root]; 1<=root<=i;
2.代码
public class Solution { public int numTrees(int n) { if(n==0) return 0; int[] dp=new int[n+1]; dp[0]=1; for(int i=1;i<=n;i++){ for(int root=1;root<=i;root++){ dp[i]+=dp[root-1]*dp[i-root]; } } return dp[n]; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69813.html
Unique Binary Search Trees Problem Given n, how many structurally unique BSTs (binary search trees) that store values 1...n? Example Given n = 3, there are a total of 5 unique BSTs. 1 3 3...
摘要:而根可以选择从到的任意的数,唯一二叉树的总数,就是根为到的树相加。所以该问题化简为以为根,其唯一左子树和右子树各有多少,这就是个动态规划的问题了。 Unique Binary Search Trees I && II 解法请见:https://yanjia.li/zh/2019/02/... Given n, how many structurally unique BSTs (b...
摘要:题目解读穷举列出所有二叉树的结构类型。重点动态规划,关注临近,,之间的关系应用穷举组合,动态规划穷举组合,适用于相邻元素有规律。处注意边界值的情况。不能有重复,遗漏。 题目解读: 穷举列出所有二叉树的结构类型。重点: 动态规划,关注临近root,left,right之间的关系应用:穷举组合,动态规划穷举组合,适用于相邻元素有规律。bug处:注意边界值的情况。不能有重复,遗漏。 clas...
摘要:递归法复杂度时间空间思路根据二叉树的性质,我们知道当遍历到某个根节点时,最近的那个节点要么是在子树里面,要么就是根节点本身。因为我们知道离目标数最接近的数肯定在二叉搜索的路径上。 Closest Binary Search Tree Value I Given a non-empty binary search tree and a target value, find the va...
Problem Given a root of Binary Search Tree with unique value for each node. Remove the node with given value. If there is no such a node with given value in the binary search tree, do nothing. You sho...
阅读 2533·2021-09-06 15:02
阅读 3132·2021-09-02 10:18
阅读 2769·2019-08-30 15:44
阅读 654·2019-08-30 15:43
阅读 1901·2019-08-30 14:08
阅读 2727·2019-08-30 13:16
阅读 1341·2019-08-26 13:52
阅读 905·2019-08-26 12:21