(1) makeorder함수를 통해 중위순회로 노드를 왼쪽에서 부터 오른쪽까지 xpos배열에 저장합니다. (각 노드의 x좌표를 결정)
(2) bfs함수를 통해 각 노드의 y좌표를 ypos배열에 저장합니다.(각 노드의 y좌표를 결정)
(3) 이후에 각 노드별로 높이에 해당하는 최대 값을 찾아 각각 max, min 배열에 저장합니다.
아이디어는 맞는 거 같은데.. bfs 함수를 써도 되고. 그런데. 잠재적인 문제가 있습니다.
http://stackoverflow.com/quest...
일단 위 답변 참고해 주세요. 정수형은 아시다시피 1byte가 넘어가는 자료형인데.
이걸 0과 -1이 아닌 다른 값으로 초기화를 했다? 잠재적인 문제점이 있다고 보면 됩니다.
(그도 그럴 것이 memset은 byte 단위로 작업을 수행하니까요.)
onlyhim 6년 전
제가 짠 코드는 다음과 같습니다.
만들어진 트리를 x,y좌표에 위치한다고 가정하여 각 노드별로 x,y좌표를 지정해주었습니다.
makeorder함수를 통해 중위순회로 노드를 왼쪽에서 부터 오른쪽까지 xpos배열에 저장합니다. (각 노드의 x좌표를 결정)
bfs함수를 통해 각 노드의 y좌표를 ypos배열에 저장합니다.(각 노드의 y좌표를 결정)
이후에 각 노드별로 높이에 해당하는 최대 값을 찾아 각각 max, min 배열에 저장합니다.
그 다음에 max[i] - min[i]를 통해 최대값을 찾아냅니다.
해결을 위한 반례나 지침부탁드리겠습니다.
감사합니다.