Q7: 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~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 };
단, 이 방법은 시간을 초과한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.