본문 바로가기

Programing/Java

[Java] Tree 구현

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