336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
트리에는 선회방법이 3가지가 있다.
중위순회(Inorder) Left -> Root -> Right
전위순회(PreOrder) Root -> Left -> Right
후위순위(PostOrder) Left -> Right -> Root
외우기 힘들다면 Root를 기준으로 중위면 Root가 가운데이 있고, 전위라면 Root가 앞에, 후위라면 Root가 뒤에 그리고 무조건 Left 다음 Right인 것을 인지한다면 쉽게 외울 수 있을 것 같다.
중위 순회 Inorder = Left -> Root -> Right
4 -> 2 -> 5 -> 1 -> 3
전위순회 Preorder = Root -> Left -> Right
1 -> 2 -> 4 -> 5 -> 3
후위순회 Postorder = Left -> Right -> Root
4 -> 5 -> 2 -> 3 -> 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | class Node { int data; Node left; Node right; } class Tree { public Node root; public void setRoot(Node node) { this.root = node; } public Node getRoot() { return root; } public Node createNode(Node left, int data, Node right) { Node node = new Node(); node.data = data; node.left = left; node.right = right; return node; } //중위 순회 Inorder = Left -> Root -> Right //4 -> 2 -> 5 -> 1 -> 3 public void inOrder(Node node) { if(node != null) { inOrder(node.left); System.out.println(node.data); inOrder(node.right); } } //전위순회 Preorder = Root -> Left -> Right //1 -> 2 -> 4 -> 5 -> 3 public void preOrder(Node node) { if(node != null) { System.out.println(node.data); preOrder(node.left); preOrder(node.right); } } //후위순회 Postorder = Left -> Right -> Root //4 -> 5 -> 2 -> 3 -> 1 public void postOrder(Node node) { if(node != null) { preOrder(node.left); preOrder(node.right); System.out.println(node.data); } } } public class Main { public static void main(String[] args) { Tree t = new Tree(); Node n4 = t.createNode(null, 4, null); Node n5 = t.createNode(null, 5, null); Node n2 = t.createNode(n4, 2, n5); Node n3 = t.createNode(null, 3, null); Node n1 = t.createNode(n2, 1, n3); t.setRoot(n1); t.inOrder(t.getRoot()); } } |
'알고리즘 및 자료구조 > 자바로 만드는 자료구조' 카테고리의 다른 글
자바로 HashTable 구현하기 (0) | 2018.10.10 |
---|---|
자바로 Queue 구현하기 (0) | 2018.10.10 |
자바로 Stack 구현하기 (0) | 2018.09.18 |