LeetCode-Unique Binary Search Trees-解题报告

原创 2015年07月08日 19:36:09

原题链接 https://leetcode.com/problems/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 2

   \ /

    2 1

这是1和2的情况。

对于n的情况

n

/ \

小于n 大于n的


如果n == 1,则小于n的情况就是0的情况,大于n的情况就是n - 1的情况,这种情况的总数为 ans[0] * ans[n - 1];

如果n == 2, 则小于n的情况 就是1的情况,大于n的情况就是n - 2,这种情况的总数为ans[1] * ans[n-1];

...

如果n == n 则小于n的情况就是 n- 1的情况,大于n的情况就是0的情况,这种情况下的总数为ans[n - 1] * ans[0];


那么ans[0]* ans[n - 1] 和 ans[n-1]*ans[0]的情况是否相同叻,答案是否定的。


因此 ans[i] = sum(ans[j] * ans[i - j - 1]) , 1<=i<= n, 0<=j <= i -1. ans[0] = 0;


class Solution {
public:
    int numTrees(int n) {
		vector<long long> ans(n + 3, 0);
		ans[0] = 1; ans[1] = 1; ans[2] = 2;
		for (int i = 3; i < n + 1; ++i)
		{
			for (int j = 0; j <= i - 1; ++j)
				ans[i] += ans[j] * ans[i - j - 1];
		}
		return ans[n];
	}
};

相关文章推荐

[leetcode] 96. Unique Binary Search Trees 解题报告

题目链接:https://leetcode.com/problems/unique-binary-search-trees/ Given n, how many structurally uniq...

LeetCode 96. Unique Binary Search Trees 解题报告

LeetCode 108. Convert Sorted Array to Binary Search Tree 解题报告

[Leetcode] 95. Unique Binary Search Trees II 解题报告

题目: Given an integer n, generate all structurally unique BST's (binary search trees) that store...

leetCode 95.Unique Binary Search Trees II (唯一二叉搜索树) 解题思路和方法

Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For ...

【LeetCode】Validate Binary Search Tree 解题报告

今天CSDN博客发生异常,折腾了大半天终于发出了这篇博文。 【题目】 Given a binary tree, determine if it is a valid binary sear...
  • ljiabin
  • ljiabin
  • 2014年12月03日 16:58
  • 8891

LeetCode Convert Sorted List to Binary Search Tree 解题报告

从给定的有序链表生成一颗平衡二叉树。 解题思路:最容易想到的就是利用数组生成二叉树的方法,找到中间节点作为二叉树的root节点,然后分别对左右链表递归调用分别生成左子树和右子树。时间复杂度O(N*lg...

[Leetcode] 255. Verify Preorder Sequence in Binary Search Tree 解题报告

题目: Given an array of numbers, verify whether it is the correct preorder traversal sequence of ...

【LeetCode】Lowest Common Ancestor of a Binary Search Tree 解题报告

Lowest Common Ancestor of a Binary Search Tree[LeetCode]https://leetcode.com/problems/lowest-common-...

[Leetcode] 99. Recover Binary Search Tree 解题报告

题目: Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree with...

LeetCode-Binary Search Tree Iterator-解题报告

原题链接https://leetcode.com/problems/binary-search-tree-iterator/ Implement an iterator over a binary ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode-Unique Binary Search Trees-解题报告
举报原因:
原因补充:

(最多只允许输入30个字)