当前位置: 代码迷 >> 综合 >> Unique Binary Search Trees - Leetcode
  详细解决方案

Unique Binary Search Trees - Leetcode

热度:40   发布时间:2023-12-17 05:32:50.0

public class Solution {public int numTrees(int n) {if(n==0 || n==1)return 1;int[] f = new int[n+1];for(int i=0; i<n+1; i++){if(i<2)f[i]=1;else{int val=0;for(int j=0; j<i;j++){val += f[j]*f[i-1-j];}f[i]=val;}}return f[n];}
}

写法2:

public class Solution {public int numTrees(int n) {if(n==0 || n==1)return 1;int[] f = new int[n+1];int val;f[0]=1; f[1]=1;for(int i=2; i<n+1; i++){val = 0;for(int k=0; k<i; k++)val += f[k]*f[i-1-k];f[i] = val; }return f[n];}
}

分析:找规律 -

没有节点的时候是f(0)=1,

一个节点的时候 f(1)=1, 

2个节点的时候【0+1; 1+0】f(2)=f(0)*f(1)+f(1)*f(0)

3个节点的时候f(3)= f(0)*f(2)+f(1)*f(1)+f(2)*f(0)

N个节点f(n)=f(0)*f(n-1)+ f(1)*f(n-2) +..... f(n-1)*f(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

  相关解决方案