클래스 두개로 구성  

1. Node 클래스 --   1.값을 담을수 있는 변수  ex) int value= 0 ; 

   --   2.왼쪽 노드의 주소값을 담을 수 있는 변수  ex) Node leftNode=null;

   --  3. 오른쪽 노드의 주소값을 담을 수 있는 변수 ex)Node rightNode=null;

public class Node {

int value=0;

Node leftNode=null;

Node rightNode=null;

public int getValue() {

return value;

}

public void setValue(int value) {

this.value = value;

}

public Node getLeftNode() {

return leftNode;

}

public void setLeftNode(Node leftNode) {

this.leftNode = leftNode;

}

public Node getRightNode() {

return rightNode;

}

public void setRightNode(Node rightNode) {

this.rightNode = rightNode;

}

}

2. Tree 클래스 -- 삽입 하는 실제 함수를 구현한 곳 

--오버로딩 이용  1 .addnode(int value) root값이  없는 경우  

 2. addnode( int value , Node root) root 값이 존재 하는 경우 




public class Tree {


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());

}

}

}

public static void main(String[] args) {

Tree t = new Tree();

t.

}

}




'Algorithm' 카테고리의 다른 글

이진 탐색 순회 소스  (0) 2015.05.03
이진 탐색 순회 개념  (0) 2015.05.03
이진 탐색트리 개념  (0) 2015.05.03
quick sort 나누는 부분 성공  (0) 2015.04.23
Binarysearch  (0) 2015.04.22
Posted by 이상욱1
,