-
[JAVA] 트리 구현Algorithm 2024. 6. 17. 23:12
자식 노드가 최대 2개인 트리를 이진트리
package Tree; public class Tree { int count; // 트리에 포함된 노드 수 public Tree() { count = 0; } public class Node{ Object data; // 공간에 넣을 숫자 Node left; // 왼쪽 자식 넣을 공간 (왼쪽 자식 노드) Node right; // 오른쪽 자식 넣을 공간 // 초기화 public Node(Object data) { this.data = data; left = null; right = null; } // 현재 노드의 좌측에 노드 연결 정보를 추가 public void addLeft(Node node){ left = node; count++; } public void addRight(Node node){ right = node; count++; } // 현재 노드의 좌측 노드 연결 정보를 삭제 public void deleteLeft(){ left = null; count--; } public void deleteRight(){ right = null; count--; } } // 데이터 받아 새로운 노드를 생성 public Node addNode(Object data){ Node n = new Node(data); return n; } // 전위순회 public void preOrder(Node node){ if(node == null) { return; } System.out.println(node.data + " "); preOrder(node.left); preOrder(node.right); } // 중위순회 public void inOrder(Node node){ if(node == null) { return; } inOrder(node.left); System.out.println(node.data + " "); inOrder(node.right); } // 후위순회 public void postOrder(Node node){ if(node == null) { return; } postOrder(node.left); postOrder(node.right); System.out.println(node.data + " "); } public static void main(String[] args) { // 트리 생성 Tree tree = new Tree(); // 노드 생성 Node node1 = tree.addNode(1); Node node2 = tree.addNode(2); Node node3 = tree.addNode(3); Node node4 = tree.addNode(4); Node node5 = tree.addNode(5); Node node6 = tree.addNode(6); Node node7 = tree.addNode(7); // 트리 연결관계 생성 /* 트리 모양 * 1 * 2 3 * 4 5 6 7 */ node1.addLeft(node2); node1.addRight(node3); node2.addLeft(node4); node2.addRight(node5); node3.addLeft(node6); node3.addRight(node7); tree.preOrder(node1); System.out.println(); tree.inOrder(node1); System.out.println(); tree.postOrder(node1); System.out.println(); node2.deleteLeft(); // 4 삭제 node3.deleteRight(); // 7 삭제 /* 삭제 이후 트리 모양 * 1 * 2 3 * 5 6 */ System.out.println(); tree.preOrder(node1); System.out.println(); // 1 2 5 3 6 } }
'Algorithm' 카테고리의 다른 글
[백준/JAVA] 14675번 : 단절점과 단절선 (0) 2024.07.10 [백준/JAVA] 11725번: 트리의 부모찾기 (0) 2024.06.18 [백준/JS] 1966번 : 프린터 큐 (0) 2023.12.19 [백준/JS] 1158번_요세푸스 문제 (0) 2023.12.13 [백준/JS] 18258번_큐2 (0) 2023.12.13