码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_96_Unique Binary Search Trees

时间:2015-04-03 17:32:04      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:二叉查找树   形态个数   

描述:

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

思路:

这一道题呢,刚开始完全没有思路,拿笔在草纸上这样演算,那样演算,但是没有思路。这是一个二叉查找树,所以题眼很可能就是在这里,在网上一查还真是这样。由于这是一棵二叉查找树,所以当一棵树形态固定下来后,该树是唯一的。由于根节点的值大于左子树上的任何一个结点的值,小于右子树上任何一个结点的值,所以,当某个节点被当作树的根节点时,树的形态个数有num(root.left)*num(root.right)个,从num_0,num_1,num_2开始迭代计算即可。

代码:

public int numTrees(int n) {
		int arr[]=new int[n+1];
		int len=0;
		Arrays.fill(arr, 0);
		arr[0]=1;
		arr[1]=1;
		for(int i=2;i<=n;i++)
		{
			len=i-1;
			for(int j=0;j<i;j++)
			{
				arr[i]+=arr[j]*arr[len-j];
			}
		}
		return arr[n];
    }

结果:

技术分享

leetcode_96_Unique Binary Search Trees

标签:二叉查找树   形态个数   

原文地址:http://blog.csdn.net/mnmlist/article/details/44855729

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!