배열을 이진 트리에 놓고 그 위에 BFT를 수행하면 첫 번째 순회가 수행하는 순서대로 정렬 된 배열을 반복하고 싶습니다. 내가 어떻게 이것을 현재 달성하는지). 분명히이 작업은 바이너리 트리에 어레이를 다시 빌드하고 저장해야하기 때문에 추가 메모리 오버 헤드가 필요합니다. 이 바이너리 검색과 유사해야하지만 나는 명령을 제대로받을 수 없다는 것을 알고있다.자바 : 배열 우선 순회 검색
다음BTree bst = sortedArrayToBST(array);
Queue<BTree> queue = new LinkedList<BTree>();
queue.add(bst);
while(!queue.isEmpty()) {
BTree node = queue.remove();
System.out.println(node.data);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
내가 현재 가지고 무엇을 (그러나 이것은 분명히 잘못된 순서를 제공) : 여기
내가 현재이 달성 방법
public void bstIterate(int[] array, int start, int end) {
if(array.length == 0) return;
int med = array.length /2;
System.out.println(array[med]);
bstIterate(array,start,mid);
bstIterate(array,mid+1,array.length);
}
이 추가 메모리 오버 헤드없이 할 수있는, 또는 스택, 벡터 또는 대기열에 항목을 저장해야합니까? 그렇다면 어떻게하면 2 진 트리보다 메모리가 적게 듭니까?
BFS를 수행하기 위해 이진 트리를 만들지 않아도되지만 큐가 필요합니다. – DarthVader
당신은 그들이 어떻게 이진 트리에 놓이게 될지 말하지 않았습니다. 힙 이냐, 어떤 순서이든간에?(이 경우에는 원하는 순서로 값을 반환하십시오.) 이진 검색 트리입니까? 균형이 잡혔습니까? – Alpedar
죄송합니다. 그렇습니다. 'sortedArraytoBST'에 의해 생성 된 BST는 균형 잡힌 이진 트리를 생성합니다. –