728x90
반응형
[Java] Tree 구현
두개의 class로 구성
- Node.java: Node를 구성하는 변수와 생성자, 필요한 메서드로 구성된 java 파일
- Test.java: Node를 실제로 생성하고 각 노드 사이의 관계를 연결하는 Main 메서드를 포함한 java 파일
Node.java
package tree;
import java.util.ArrayList;
import java.util.List;
public class Node {
private Node parent;
private ArrayList<Node> childList;
private int depth;
private boolean isIfRoot;
private boolean isIfleaf;
private Object data;
public Node(Object data,int depth, boolean isIfRoot, boolean isIfleaf){
parent=null;
childList=new ArrayList<Node>();
this.depth=depth;
this.data=data;
this.isIfRoot=isIfRoot; // root 노드 여부
this.isIfleaf=isIfleaf; // leaf 노드 여부
}
// 부모 노드와 연결해주는 메서드
public void makeParentTree(Node parent){
if(this.parent!=null){
this.parent=null;
}
this.parent=parent;
}
// 자식 노드와 연결해주는 메서드
public void makeChildTree(Node child){
this.childList.add(child);
}
// 해당 노드의 값을 return
public Object getData(){ return this.data; }
// 부모 노드의 값을 return
public Node getParentTree(){ return this.parent; }
// 자식 노드의 값을 return
public List<Node> getChildTree() { return this.childList; }
}
Test.java
package tree;
public class Test {
public static void main(String[] args) {
Node node1=new Node("자재",1,true,false);
Node node2=new Node("공사물품",2,false,false);
Node node3=new Node("락볼트",3,false,false);
Node node4=new Node("락볼트22",4,false,true);
Node node5=new Node("락볼트33",4,false,true);
Node node6=new Node("숏크리트",3,false,false);
Node node7=new Node("숏크리트22",4,false,true);
node2.makeParentTree(node1);
node3.makeParentTree(node2);
node4.makeParentTree(node3);
node5.makeParentTree(node3);
node6.makeParentTree(node2);
node7.makeParentTree(node6);
node1.makeChildTree(node2);
node2.makeChildTree(node3);
node2.makeChildTree(node6);
node3.makeChildTree(node4);
node3.makeChildTree(node5);
node6.makeChildTree(node7);
System.out.println("노드 2의 부모노드 : "+node2.getParentTree().getData());
System.out.println("노드 3의 부모노드 : "+node3.getParentTree().getData());
System.out.println("노드 4의 부모노드 : "+node4.getParentTree().getData());
System.out.println("노드 5의 부모노드 : "+node5.getParentTree().getData());
System.out.println("노드 6의 부모노드 : "+node6.getParentTree().getData());
System.out.println("노드 7의 부모노드 : "+node7.getParentTree().getData());
System.out.println("=====================================================");
System.out.println("노드 1의 자식노드 : "+node1.getChildTree().get(0).getData());
System.out.println("노드 2의 자식노드 : "+node2.getChildTree().get(0).getData());
System.out.println("노드 3의 자식노드 : "+node3.getChildTree().get(0).getData());
System.out.println("노드 6의 자식노드 : "+node6.getChildTree().get(0).getData());
}
}
실행결과
728x90
반응형
'Programing > Java' 카테고리의 다른 글
[Java] String 클래스 기본 메서드 (0) | 2020.12.10 |
---|---|
[Java] 값에 의한 호출 (0) | 2020.12.09 |
[Java] Bubble sort (버블정렬) (0) | 2020.12.07 |
[Java] 연속된 정수들의 최대값 구하기 (0) | 2020.12.07 |
[Java] 소수 출력하기 (0) | 2020.12.07 |