首页 > 代码库 > [leetcode]Unique Binary Search Trees
[leetcode]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的单独处理)。可以递归求子树的个数,也可以用数组记录已知n个节点的子树的方法数。
代码:
int numTrees(int n) { //C++ if(n == 1) return 1; if(n == 2) return 2; vector<int> record(n+1,0); record[0] = 0; record[1] = 1; record[2] = 2; for(int i = 3; i <= n; i++) { int sum = 0; int k; //left nodes for(k = 0; k < i; k++) { int temp; if(k == 0 ) temp = record[i-k-1]; else if(i-k-1 == 0) temp = record[k]; else temp = record[k]*record[i-k-1]; sum += temp; } record[i] = sum; } return record[n]; }
[leetcode]Unique Binary Search Trees
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。