Q7: Unique Binary Search Trees

1987 단어
문제 설명:
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~n의 모든 수 i
뿌리가 i인 두 갈래 나무 수량 = 왼쪽 나무 수량 * 오른쪽 나무 수량
왼쪽 나무의 뿌리 노드 수치 범위는 1~i이고, 오른쪽 나무의 뿌리 노드 수치 범위는 i+1~n이며, i+1~n으로 구성된 두 갈래 찾기 나무의 수량은 1~n-i와 같다
코드 1:
 1 class Solution {
 2 int sum;
 3 public:
 4     int numTrees(int n) {
 5         if(n == 0) return 0;
 6         if(n == 1) return 1;
 7         for(int i = 1; i <= n; i++){
 8             int l = numTrees(i-1);
 9             int r = numTrees(n-i);
10             sum = sum + (l==0?1:l) * (r==0?1:r);
11         }
12         return sum;
13     }
14 };

단, 이 방법은 시간을 초과한다

좋은 웹페이지 즐겨찾기