문제 https://www.acmicpc.net/problem/1991 풀이 이진트리를 입력받아 전위순회(preorder), 중위순회(inorder), 후위순회(postorder)를 구현하는 문제이다. 처음에 트리의 입력이 노드순서대로 입력되는줄 알았는데 아니여서 개고생 ㅠㅠ 트리의 순서가 무작위로 입력되므로 이를 tree배열에 잘 넣어주어야 한다. t,l,r을 입력받는다 t를 인덱스로 변환시킨다(A -> ord(A)-64 -> 1번인덱스)(트리는 인덱스1시작이 편하드라..) tree, lefttree, righttree에 변환된 인덱스위치에 t, l, r값을 넣어준다. 모두 입력받았으면 전위, 중위, 후위순회 진행! 재귀함수로 진행한다. 전위순회 : root -> left -> right 중위순회 : left -> root -> right 후위순위 : left -> right -> root
데이터 저장 가이드라인이 있는 아주 친절한(?) 문제이다. 하지만 친절은 해로우므로, 별도로 graph 구성을 했다. graph[i]=[이동할 수 있는 노드번호들] 로 구성했다. 0번부터 출발하여, graph[0]의 노드번호들을 백트래킹으로 탐험한다. ex) 위의 예시에서, 0번(출발지점)과 연결된 노드들 -> 1,2 graph[0]에서 노드1을 제거하고 1번으로 이동(재귀) 재귀 밖에선, 노드1을 다시 넣어주고 노드2를 제거하고 이동(재귀) 반복하다가, 99번노드(도착지점)에 도달할 경우, global값 tmp을 1로 바
단순한 중위순회 문제이다. 중위순회란? 단순하게 노드와 노드의 왼쪽자손, 오른쪽자손이 주어지고, 노드의 값(문자)가 주어지므로 재귀함수로 중위순회 후 return 값들을 다 더해서 출력!
swea 1232, 사칙연산 문제에서 연산이 올바른지 확인하는 문제이다. 연산의 결과는 구할 필요가 없고, 연산이 올바르게 진행되는지(계산되는지) 확인하면 된다. 안되는 경우는 2가지가 있다 i) 상위노드가 연산자(+-*/)이고, 하위노드가 없을 때, ii) 상위노드가 숫자이고 하위노드가 존재할 때, 두가지의 경우가 재귀중에 존재할 경우, "x"를 리턴함. 최종적