CH8-3 이진트리의 순회(3)
이번시간에는 전위순회와 후위 순회를 배우겠다.
사실 중위순회만 알면 전위순회와 후위순회는 바로 알 수 있다.
이렇게 함수의 호출순서만 바뀌면 전위, 후위순회가 된다…
CH8-3 이진트리의 순회(4)
C에서 배운 함수포인터를 여기서 활용해보자…
앞서 배운 전위,후위,중위순회를 함수포인터를 이용해 하나의 함수에서 활용가능하게 만들자.
typedef void (*VisitFunPtr)(BTData data);
헤더에 이런 시그니처를 만든다. 이때 C강의에서 배웠던 것 처럼 함수명에 포인터 연산자 없이도 동작은 된다. 나는 가시성을 위해 포인터연산자를 넣었다.
이렇게 typedef
로 선언하면 앞으로 VisitFunPrt
이라는 이름을 해당 반환타입과 입력타입을 가진 함수들의 범용적인 포인터 변수로 활용가능해진다.
그리고 헤더에 있는 중위, 전위, 후위순회의 함수들의 매개변수를 다음과 같이 만들자.
void InorderTraverse(BTreeNode* bt, VisitFunPtr action); //중위순회
void PreorderTraverse(BTreeNode* bt, VisitFunPtr action); // 전위순회
void PostorderTraverse(BTreeNode* bt, VisitFunPtr action); // 후위순회