알고리즘

[JAVA] 백준 1991번 - 트리순회

ji_iin 2021. 7. 19. 19:20

문제

1991번: 트리 순회

[ 해결순서 ]

  1. 한줄에 띄어서 입력받으므로 띄어쓰기를 붙여 문자열을 배열로 전환하여 노드에 저장하였다.
  2. 문제를 해결하기 위해 노드, 트리 클래스가 있어야 한다.
  3. 노드 클래스 : 루트, 왼쪽 자식, 오른쪽 자식이 있고, 노드의 값을 입력받아 지정 가능하다.
  4. 트리 클래스 : 여러개의 노드가 모여 트리를 구성하므로, 노드가 있어야 함
    1. add() : 트리에 노드를 추가하는 메소드이며 처음을 제외하고는 search()를 사용하여 추가.
    2. search() : 어떤 노드밑에 서브트리가 생기는지 재귀호출하며 찾음.
  5. 전위순회 preorder : 루트 → 왼쪽 서브트리 → 오른쪽 서브트리 방문
  6. 중위순회 inorder : 왼쪽 서브트리 → 루트 → 오른쪽 서브트리 방문
  7. 후위순회 postorder : 왼쪽 서브트리 → 오른쪽 서브트리 방문 → 루트

toCharArray()

: String → Char[] 로 전환하여 리턴

✏️한줄평

개념을 아는 것과 직접 구현하는 것은 다르다는 걸 다시 깨닫게 되었다. 어렵진 않았지만, 트리를 추가하는 부분에서 조금 헤맸다. 입력을 받는데도 은근 헤맸다. (그냥 헤맨건가...) 트리 순회에 대한 개념도 상기시키며 구현도 제대로 해본 문제였다.


코드