zoukankan      html  css  js  c++  java
  • 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
    

    其实很容易想到,对于一个根结点,所有情况是左子树个数与右子树个数的乘积,而对于n个结点,所有情况为对于每一个结点作为根时的情况的和。一开始直接写了一段递归,明知道过不了大集合还是试了一下,结果小集合也没有过,所以干脆bottom-up吧。代码:

     1 int numTrees(int n) {
     2   // IMPORTANT: Please reset any member data you declared, as
     3   // the same Solution instance will be reused for each test case.
     4   int* cache = (int*)malloc(sizeof(int)*(n+1));
     5   int i,j,sum;
     6   cache[0]=1;
     7   cache[1]=1;
     8   //printf("%d
    ",cache[0]);
     9   for(i=2;i<=n;i++){
    10     sum=0;
    11     for(j=0;j<i;j++)
    12       sum+=cache[j]*cache[i-1-j];
    13     cache[i]=sum;
    14     //printf("%d
    ",cache[i]);    
    15   }
    16   int result = cache[n];
    17   free(cache);
    18   return result;
    19 }
  • 相关阅读:
    对于作用域和闭包的理解
    响应式开发学习(3)——图片优化
    响应式开发(2)
    响应式开发(1)
    数据结构
    进阶题目
    集合
    数组
    内存相关
    线程
  • 原文地址:https://www.cnblogs.com/mike442144/p/3448887.html
Copyright © 2011-2022 走看看