- 전위 순회(Preorder Traversal)
- 현재 노드 → 왼쪽 서브트리 → 오른쪽 서브트리
- 출력 순서: 루트 먼저
- 중위 순회(Inorder Traversal)
- 왼쪽 서브트리 → 현재 노드 → 오른쪽 서브트리
- 출력 순서: 정렬된 순서
- 후위 순회(Postorder Traversal)
- 왼쪽 서브트리 → 오른쪽 서브트리 → 현재 노드
- 출력 순서: 루트 마지막

전위 순회(Preorder): 1 2 4 5 3 6 7
중위 순회(Inorder): 4 2 5 1 6 3 7
후위 순회(Postorder): 4 5 2 6 7 3 1
class TreeNode { int value; TreeNode left, right; public TreeNode(int value) { this.value = value; left = right = null; } } public class TreeTraversal { public static void main(String[] args) { // 트리 생성 TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(3); root.left.left = new TreeNode(4); root.left.right = new TreeNode(5); root.right.left = new TreeNode(6); root.right.right = new TreeNode(7); System.out.println("전위 순회(Preorder):"); preorderTraversal(root); // 출력: 1 2 4 5 3 6 7 System.out.println("\n중위 순회(Inorder):"); inorderTraversal(root); // 출력: 4 2 5 1 6 3 7 System.out.println("\n후위 순회(Postorder):"); postorderTraversal(root); // 출력: 4 5 2 6 7 3 1 } // 전위 순회 (Preorder Traversal) public static void preorderTraversal(TreeNode node) { if (node == null) return; System.out.print(node.value + " "); preorderTraversal(node.left); preorderTraversal(node.right); } // 중위 순회 (Inorder Traversal) public static void inorderTraversal(TreeNode node) { if (node == null) return; inorderTraversal(node.left); System.out.print(node.value + " "); inorderTraversal(node.right); } // 후위 순회 (Postorder Traversal) public static void postorderTraversal(TreeNode node) { if (node == null) return; postorderTraversal(node.left); postorderTraversal(node.right); System.out.print(node.value + " "); } }
'Algorithm' 카테고리의 다른 글
이분법(Bisection Method) (1) | 2024.12.13 |
---|---|
파스칼의 삼각형 (1) | 2024.12.13 |
깊이 우선 탐색 - DFS(Depth-First Search) - dijkstra 다익스트라 (0) | 2024.12.13 |
넓이우선탐색 BFS(Breadth-First Search) (0) | 2024.12.13 |
에라토스테네스 체 (소수찾기) (0) | 2024.12.13 |