C# 프로그래밍 기초 실습 전자책

C# / .NET 알고리즘과 퀴즈
본 알고리즘 퀴즈 문제는 C#/.NET 개발자를 위한 알고리즘 인터뷰 혹은 C# 프로그래밍을 통한
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.


퀴즈 질문


예상답변/설명

이진검색트리를 PostOrder로 읽기 위해서는 왼쪽 - 오른쪽 - 현재노드를 읽게된다. 이러한 방식으로 트리를 읽어나가면서 배열의 요소값을 순차적으로 체크하면 되는데, 이를 위해 배열인덱스를 함께 전달하여 순차적으로 증가시킨다. 인덱스를 계속 변경하기 위해 ref를 사용하였다.

bool IsPostOrder(TreeNode t, int[] A, ref int i)
{
return (t.Left==null || t.Left != null && IsPostOrder(t.Left, A, ref i))) 
  && (t.Right==null || (t.Right!=null && IsPostOrder(t.Right, A, ref i))) 
  && t.Value == A[i++];
}

마지막 라인에서 처럼 현재 노드 값을 배열 요소값과 비교한 후, 배열 인덱스 i 를 하나 증가시키면 다음 배열요소 검사를 준비하게 된다.