삽입 할때 만들어 둔  Tree 클래스에 preorder 함수 , inorder 함수 postorder 함수 를 추가 해줄것입니다.

public class Tree {


public Node rootNode=null;

public void addNode(int value){

// root 값이 없는 경우 

if(rootNode==null){

Node n=new Node();

n.setValue(value);

rootNode=n;

}else{// root 값이 있는경우 

addNode(value , rootNode );

}

}

public void addNode(int value , Node rootNode){

// root 값보다 작은 경우   

if(rootNode.getValue()>value){

// root의 왼쪽 노드가 없는경우 

if(rootNode.getLeftNode()==null){

Node n = new Node();

n.setValue(value);

rootNode.setLeftNode(n);

}

else {// root의 왼쪽노드가 있는경우 

addNode(value, rootNode.getLeftNode()); // 다시 이함수를 호출해서 더 깊이 들어가는 부분이고 root는 root의 왼쪽 노드 

}

}else{//root 값보다 큰경우 

// root의 오른쪽 노드가 없는 경우 

if(rootNode.getRightNode()==null){

Node n = new Node();

n.setValue(value);

rootNode.setRightNode(n);

}

else{// root의 오른쪽 노드가 있는경우 더 깊이 들어가야한다 

addNode(value, rootNode.getRightNode());

}

}

}

// preorder 쪽  Root 부터  왼쪽 모든 노드 탐색 후 오른쪽 ( root , left , right)  

public void preorder(Node rootNode){

if(rootNode==null){

return ;

}

System.out.println(rootNode.value);

preorder(rootNode.leftNode);

preorder(rootNode.rightNode);

}

//inorder 쪽 맨 왼쪽 아래노드 부터 Root ,  오른쪽 (left , root , right)

public void inorder(Node rootNode){

if( rootNode==null){

return;

}

inorder(rootNode.leftNode);

System.out.println(rootNode.value);

inorder(rootNode.rightNode);

}

//맨 왼쪽 아래노드 부터 오른쪽 탐색 후 Root  (left , right , root) 

public void postorder(Node rootNode){// 이렇게 하면 널포인트 에러가 날거같은데 

if(rootNode == null ){

return;

}

postorder(rootNode.leftNode);

postorder(rootNode.rightNode);

System.out.println(rootNode.value);

}

public static void main(String[] args) {

Tree t = new Tree();

t.addNode(24);

t.addNode(15);

t.addNode(19);

t.addNode(2);

t.addNode(28);

t.addNode(27);

t.addNode(30);

System.out.print("preorder:");

t.preorder(t.rootNode);

System.out.print("inorder:");

t.inorder(t.rootNode);

System.out.print("postorder:");

t.postorder(t.rootNode);

}

}

결과값 
PreOrder : 24 15 2 19 28 27 30 InOrder : 2 15 19 24 27 28 30 PostOrder : 2 19 15 27 30 28 24 


'Algorithm' 카테고리의 다른 글

동적 프로그램과 분할정복의 차이  (0) 2015.05.12
문자열 뒤집기 문제  (0) 2015.05.09
이진 탐색 순회 개념  (0) 2015.05.03
이진 탐색트리 삽입  (0) 2015.05.03
이진 탐색트리 개념  (0) 2015.05.03
Posted by 이상욱1
,