Tree Traverse
- 최초 등록일
- 2011.12.22
- 최종 저작일
- 2011.06
- 6페이지/ MS 워드
- 가격 1,000원
소개글
Tree와 Tree Traverse - Inorder & Preorder & Postorder & Levelorder Traverse를 Matlab으로 구현한 소스입니다.
( 트리 순회 - 중위순회 & 전위순회 & 후위순회 & 레벨순회 )
목차
1. Matlab으로 트리(Tree) 구현
2. Inorder & Preorder & Postorder & Levelorder Traverse한 결과
3. 소스 분석
4. Matlab으로 Inorder & Preorder & Postorder & Levelorder Traverse 함수 구현
5. Matlab으로 Inorder & Preorder & Postorder & Levelorder Traverse 한 결과를 텍스트파일로 저장하는 함수 구현
본문내용
자료형이 다른 두 데이터를 출력하고 그 값을 파일에 저장하기 위해 노드의 데이터를 선언할 때 scalar값과 character array값을 따로 선언하였다. 이진 트리이므로 자식들을 Children으로 한꺼번에 정의하지 않고 왼쪽 자식과 오른쪽 자식을 따로 정의하여 트리를 구성하였다.
트리의 순회 함수들을 구현 할 때는 C에서 구현한 방법과 거의 유사하다. 재귀를 사용하여 함수를 구현하는 방법은 같고 Matlab에서 사용하는 문법을 사용하였다는 것만 다르다. 뿌리를 방문할 때는 disp 함수를 사용하면 자료형이 다른 두 데이터를 함께 출력할 수 없는 것 같아 fprintf 함수를 사용했다. fprintf 함수가 파일에 출력할 때만 사용하는 줄 알았는데 Matlab 도움말을 통해 file ID 부분에 1이라고 쓰면 command window 창에 출력이 된다는 것을 알게 되었다. levelorder 함수는 다른 순회 함수들과 달리 첫 번째 노드부터 트리를 구성하고 있는 모든 노드를 순서대로 출력하면 되므로 더 쉽게 구현할 수 있었다. 트리가 행렬의 형태로 선언되므로 트리를 구성하고 있는 모든 노드의 개수는 트리의 행 수를 구하는 연산을 통해 구할 수 있었다.
순회 함수들의 출력값을 파일에 저장하는 함수들을 구현할 때는 순회 함수 소스에서 저장할 파일만 open한 후 그 파일에 출력하는 하고 파일을 close하는 부분만 추가하여 함수를 완성하였다. 여기서 저장할 파일을 open 할 때 파일을 어떤 모드로 open 할 것인지가 조금 헷갈렸다. 출력값을 파일에 저장하는 함수들은 재귀함수로 구성되어 있어 기존에 존재하고 있던 파일을 지우고 새로 연다면 그 전에 저장되었던 값들이 지워지므로 기존에 존재하는 파일을 그대로 불러와 그 파일에 끝에 데이터를 추가하는 ‘a’ 형식으로 파일을 open하여야 한다.
참고 자료
없음