2016-09-16 9 views

답변

2

길이가 na - 정렬 된 입력 배열을 예로 들어 보겠습니다. 그런 다음 a[mid]으로 BST를 시작하십시오. mid - 중간 요소 (n/2). 일단 우리가 a[mid]을 BST에 푸시하면 우리 배열은 두 개의 새로운 정렬 된 배열 : [0 : mid-1]과 [mid +1, n-1]로 나뉘어집니다.

둘 다 동일한 논리를 사용하십시오 (하위 배열이 비어 있지 않은 경우). 각 하위 배열에 대해 새 mid 요소를 선택하고 BST로 푸시합니다. 그러면 4 개의 새로운 배열이 생성됩니다.

모든 하위 배열에 대해이 프로세스를 완료하면 해당 입력에 대해 가장 균형 잡힌 BST를 얻을 수 있습니다.

+0

그래, 그렇다고해서 재귀 적으로 노드를 추가하도록 BST의 삽입 기능을 수정해야합니다. 데이터 구조 구현을 변경하지 않고 균형 잡힌 BST를 산출 할 입력 시퀀스를 찾고있었습니다. –

+1

@HaseebJaved 삽입 기능을 변경해야한다는 것은 아닙니다. 정렬 된 배열에서 BST를 작성하는 함수를 추가하기 만하면됩니다. 그 후 다른 요소를 추가하려면 일반 삽입 기능을 사용하십시오. –

+0

@ A. 충분한 공정한. 하지만 BST에 삽입 할 때 균형 잡힌 BST를 생성 할 수있는 시퀀스 패턴이 없다는 것을 의미합니까? 즉, 도우미 기능을 사용하지 않고? –

관련 문제