최소 절대 차이 (530) 이진 검색 트리 (깊은 검색)

 

정렬 + 예약 주문 탐색 시간 복잡도 : O (nlogn) 공간의 복잡도 : O (N)

. 1  클래스 솔루션 {
 2      개인  INT RES = Integer.MAX_VALUE를;
 . 3      개인 ArrayList의 <정수> =이 배열 새로운 새로운 ArrayList를 <> ();
 . 4      공공  INT getMinimumDifference합니다 (TreeNode를 루트) {
 5.          DFS (루트); // 예약 주문 탐색 트리의 전 노드 엘리먼트 
. 6          은, Collections.sort (ARRY); // 정렬 
7.           ( INT I = 0; I는 <arry.size () - 1]. I ++) { // 최소 절대 차가 확실히 크기의 두 개의 인접한 소자에 의해 생성 된 
8              INT의 TEMP는 Math.abs을 = (. arry.get (I + 1) - arry.get (I))
 9.              IF(온도 <해상도) = 입술 온도;
10          }
 11          리턴 입술;
12      }
 13      무효 DFS (TreeNode를 루트) {
 14 일          경우 (루트 ==  ) ;
15          arry.add (root.val);
16          DFS (root.left);
17          DFS (root.right);
18      }
 19 }

 

I이 이진 검색 트리 탐색 순서는 절대적인 최소의 다음 다음 레코드를 큰 배열의 요소 값, 연신 소자 작은에서 얻은 기존의 요소의 절대 값의 차이를 산출하고, 인 것을 보지 못했다 차이를 비교하고, 시간 복잡도 : O (N), 공간적 복잡도 : O (1)

. (1 개)  클래스 해결 {
 2      개인  INT의 사전 = Integer.MAX_VALUE로는; // 초기 값을 설정한다 
(3).      개인  INT RES = Integer.MAX_VALUE로; // 최소 절대 차를 기록 
. 4      공공  의 INT getMinimumDifference (TreeNode를 루트) {
 5.          DFS (루트)
 . 6          RES]
 . 7      }
 . 8      공극 DFS (TreeNode를 루트) { // 전순 
. 9          IF (루트 ==  ) ,
 10          DFS (root.left)
 . 11         Mathmin는 RES (입술, Mathabs (프리 = rootval을));
(12) 그리고          예비 = rootval;
13          DFS (rootright);
14      }
 15 }

추천

출처www.cnblogs.com/NiBosS/p/12039615.html