트리의 운행중 preOrder, inOrder, postOrder 방식은 다음과 같다.
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)
inOrder traversal : Left-Root-Right
postOrder traversal : Left-Right-Root
preOrder traversal : Root-Left-Right
/** 트리의 운행 Example
* 전위/중위/후위
*/
import java.util.*; //for Random Class
class BinaryNode {
int element; // The data in the node
BinaryNode left; // Left child
BinaryNode right; // Right child
BinaryNode(int element) { //생성자
this( element, null, null );
}
BinaryNode(int element, BinaryNode left, BinaryNode right){
this.element = element;
this.left = left;
this.right = right;
}
}
class BinaryTreeTraversal {
//트리 생성
public BinaryNode insert(BinaryNode tree, int n) {
if (tree == null) {
tree = new BinaryNode(n);
tree.right= tree.left=null;
}
else if(n > tree.element) {
tree.right = insert(tree.right,&= null){
System.out.print(tree.element + " ");
preorder(tree.left);
preorder(tree.right);
}
}
//후위운행
public void postorder(BinaryNode tree) {
if (tree != null){
postorder(tree.left);
postorder(tree.right);
System.out.print(tree.element + " ");
}
}
//중위운행
public void inorder(BinaryNode tree) {
if (tree != null){
inorder(tree.left);
System.out.print(tree.element + " ");
inorder(tree.right);
}
}
}
public class BinaryTreeTraversalTest {
public static void main(String[] args){
BinaryNode root = null;
int nansu;
BinaryTreeTraversal tr = new BinaryTreeTraversal();
Random r = new Random();
System.out.print("발생된 난수 : " );
for(int i=0; i<5; i++) {
nansu = r.nextInt()%100;
System.out.print(nansu + " ");
//항상 root가 반환된다.
root = tr.insert(root, nansu);
}
System.out.print("\nPreorder Traversal : ");
tr.preorder(root);
System.out.print("\nInorder Traversal : ");
tr.inorder(root);
System.out.print("\nPostorder Traversal : ");
tr.postorder(root);
댓글 없음:
댓글 쓰기