JAVA
[JAVA] 자바 - 이진트리 구현, 순회 알고리즘 코드
데이25
2020. 10. 27. 17:54
다음과 같은 1~ 15까지 이진트리를 구현하고
전위 순회 , 중위 순회 , 후위 순회를 구현하였다.
탐색 설명
1) 전위순회
-
자기 자신 처리
-
왼쪽 자식 방문
-
오른쪽 자식 방문
2) 중위순회
-
왼쪽 자식 방문
-
자기 자신 처리
-
오른쪽 자식 방문
3) 후위순회
-
왼쪽 자식 방문
-
오른쪽 자식 방문
-
자기 자신 처리
코드
import java.util.*;
class BiTree {
int data;
BiTree left, right;
public BiTree(int data) {
this.data = data;
}
}
public class Main {
public static void main(String[] args) {
int num = 15;
BiTree nodes[] = new BiTree[num+1];
for(int i = 1 ; i <= num ; i++ ) {
BiTree node = new BiTree(i);
node.left = null;
node.right = null;
nodes[i] = node;
}
for(int i = 2 ; i <= num ; i++ ) {
if( i % 2 == 0 ) {
nodes[i/2].left = nodes[i];
} else {
nodes[i/2].right = nodes[i];
}
}
preorder(nodes[1]);
System.out.println();
inorder(nodes[1]);
System.out.println();
postorder(nodes[1]);
}
static void preorder(BiTree ptr) {
if(ptr != null) {
System.out.print(ptr.data + " ");
preorder(ptr.left);
preorder(ptr.right);
}
}
static void inorder(BiTree ptr) {
if(ptr != null) {
inorder(ptr.left);
System.out.print(ptr.data + " ");
inorder(ptr.right);
}
}
static void postorder(BiTree ptr) {
if(ptr != null) {
postorder(ptr.left);
postorder(ptr.right);
System.out.print(ptr.data + " ");
}
}
}
결과
전위 순회 : 1 2 4 8 9 5 10 11 3 6 12 13 7 14 15
중위 순회 : 8 4 9 2 10 5 11 1 12 6 13 3 14 7 15
후위 순회 : 8 9 4 10 11 5 2 12 13 6 14 15 7 3 1