내 AVL 트리 정수 avlTree[35][5]
의 2 차원 배열을 사용하여 자바로 구현되어 작동하지 않습니다 - 열 대표 :AVL 트리에서 차 순회
- [0] - 왼쪽 높이
- [1 ] - 왼쪽 자식
- [2] - 데이터
- [3] - 오른쪽 자식
- [4] - 높이 오른쪽.
주 프로그램에서 다음과 같은 메서드를 호출하면 결과적으로 3 개의 노드가 나타납니다. 가장 왼쪽 노드와 그 부모가 두 번 이어집니다.
public void inorderTraversal(int root) {
if ((Main.avlTree[root][1] == 0) && (Main.avlTree[root][3] == 0)) {
System.out.println(Main.avlTree[root][2]);
} else {
if (Main.avlTree[root][1] != 0) {
root = Main.avlTree[root][1];
inorderTraversal(root);
}
System.out.println(Main.avlTree[root][2]);
if (Main.avlTree[root][3] != 0) {
root = Main.avlTree[root][3];
inorderTraversal(root);
}
}
}
이것은 숙제이지만'inorderTraversal (** final ** int root) '과 같은 메소드를 선언하면 문제를 해결하는 데 도움이된다. StackOverflowError의 경우 - 대부분 트리에주기가 있습니다. – bestsss
최종 선언 할 필요가 없습니다. 유형이 int이므로 "실제"값은 변경되지 않습니다. – MasterCassim
@MasterCassim, root는 노드의 현재 색인을 나타내며 실제 노드입니다. 코드 ('root = ...')가 그것을 바꿔 버리므로 그것은 엉망입니다. 마지막은 숙제이기 때문에 마지막이었습니다. "실제"값은 없지만 효과적으로 변경된 노드에 대한 인덱스입니다. – bestsss