정렬 된 정수 배열을 이진 검색 트리로 변환하려고합니다. 나는이 일을하는 법을 이해한다고 믿습니다. 아래에 내 의사 코드를 게시했습니다. 내가 볼 수없는 것은 재귀가 실제로 어떻게 작동하는지입니다.정렬 된 배열을 이진 검색 트리로 변환 (재귀 묘사)
내 배열이 1, 2, 3, 4, 5 인 경우 ... 먼저 내 BST의 루트를 3 개 만듭니다. 그런 다음 3의 왼쪽 자식 노드를 2로 만듭니다. 그런 다음 1의 왼쪽 자식 노드를 2로 만들고 2로 돌아가시겠습니까? 재귀가 전체 프로세스를 통해 어떻게 진행되는지 알지 못합니다 ...
이 질문에 대한 설명이 잘못되어 있으면 미리 감사드립니다. 나는 명백한 코드를 원하지 않지만 누군가가 내가 재귀가 문제를 어떻게 진행 하는지를 도울 수 있다면 정말 고마워 할 것이다. (어떤 노드가 어떤 순서로 호출되는지/호출 스택 함수가 어떻게되는지)
의사 코드 :
단계 1. 정수 배열, 정수 시작 및 정수 끝을 사용하는 함수를 만듭니다. 시작 = 0, 끝 = 정수 배열 크기 - 1
단계 2. (시작 + 끝)/2와 같은 정수 중간을 만듭니다.
단계 3. 시작> 종료인지 테스트합니다.
단계 4. 그렇다면 null을 반환합니다.
5 단계. 중간 색인의 값을 트리의 루트로 설정하십시오.
단계 6. 루트의 왼쪽 노드를 (array, start, middle - 1)을 사용하여 함수와 같게 설정하십시오.
단계 7. 루트의 오른쪽 노드를 (array, middle + 1, end) 함수와 동일하게 설정하십시오. 자바에서
가 있었다 OP에 대한 답에 몇 가지 설명이나 의견을 추가 하시겠습니까? –