neyo0311   4년 전

일단 전위순회까지만 인터넷을 참고해서 구현해봤습니다.

근데 A -> B -> D 까지는 이해가 가는데

그 다음 D에서는 왼쪽 오른쪽이 모두 .이기 때문에 재귀가 더이상 안되야 할 것 같은데

코드대로 하면 D에서 C로 출력이 됩니다.

D에서 양쪽 모두 .인경우 다시 B A로 올라가는 것 같은데 왜 재귀문이 끝나지 않고

다시 위쪽으로 올라가서 재귀가 진행되는지 궁금합니다.

dyk777   4년 전

우선 preorder 함수 내에 return;문이 생략된 것이라는걸 상기시켜 드리고 싶네요.

return문은 이 함수의 실행을 끝내고, 이 함수를 "호출한" 곳으로 "복귀해라"라는 지시로 생각할 수 있습니다.

D가 출력된 후에 이 함수는 어디로 return 해야할까요?

B를 출력한 후 함수를 호출하여 D를 출력하였으므로, B를 출력한 함수로 return하여 그 아래의 코드를 진행하게 됩니다.

마찬가지로 B를 출력한 함수는 더이상 아무것도 출력하지 않고 끝나고, 이 함수는 A를 출력한 함수에서 호출하였으므로 그 함수로 return하게 됩니다.

A를 출력한 함수는 진행하여 13~14번줄에서 C를 출력한 함수를 호출하게 됩니다.

댓글을 작성하려면 로그인해야 합니다.