티스토리 뷰
반응형
랜덤하게 2진트리를 생성하고, 각각의 방식 (Preorder, Inorder, Postorder) 으로 출력하는 프로그램을 만들어 보았다.
먼저 랜덤하게 생성되는 트리는 중복되지 않는 20개의 숫자를 랜덤하게 생성하여 이진트리로 만들었다.
랜덤하게 생성된 이진트리의 구조는 다음과 같다.
이를 각각의 방식으로 출력해주는 함수를 만들어 출력해 주었다.
출력함수는 다음과 같다.
Preorder 방식
void PrintPreorder(node* tree)
{
if(tree != NULL)
{
printf("%d ",tree->data);
PrintPreorder(tree->left_child);
PrintPreorder(tree->right_child);
}
else
return;
}
Inorder 방식
void PrintInorder(node* tree)
{
if(tree != NULL)
{
PrintInorder(tree->left_child);
printf("%d ",tree->data);
PrintInorder(tree->right_child);
}
else
return;
}
Postorder 방식
void PrintPostorder(node* tree)
{
if(tree != NULL)
{
PrintPostorder(tree->left_child);
PrintPostorder(tree->right_child);
printf("%d ",tree->data);
}
else
return;
}
Linked List로 연결되어 있는 트리의 Root 포인터를 인자로 받아와
Recursion을 이용하여 각각의 방식대로 출력해 준다.
함수 내에서 Recursive하게 함수가 호출되는 순서를 보면, 이전 포스팅에서 이야기 했던
각 방식의 호출 순서와 동일함을 확인 할 수 있다.
이는 이해하기 좀 더 쉬울것이라 예상된다.
결과적으로 최종 출력 화면을 확인해 보면
다음과 같이 제대로 출력되는 모습을 확인 할 수 있다.
반응형
'Computer Science > 자료구조' 카테고리의 다른 글
Binary Tree Traversal - Inorder, Preorder, Postorder, Levelorder (0) | 2012.08.30 |
---|---|
Linked List를 이용한 다항식 덧셈연산 (Polynomial Add) (0) | 2012.08.03 |
Linked List (링크드 리스트) 이해 및 기본적인 생성 (0) | 2012.08.03 |
Infix to Postfix - 중위표기식을 후위표기식으로 변환 (0) | 2012.07.31 |
Postfix Evaluation, 후위표기식 연산 (0) | 2012.07.31 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- LGG6
- 자동차유리스톤칩
- 글로벌자동차유리
- 글자수 세기 프로그램
- 커플여권지갑
- LGPay
- 워치어베인
- 앞유리돌빵
- 에어팟안드로이드
- 유리스톤칩
- AR스티커
- LG페이
- 크롬캐스트
- 여권케이스
- 크롬캐스트2
- AR Stickers
- LG워치 어베인
- 워치어베인 2nd 에디션
- 가죽여권지갑
- chromecast2
- Chromecast
- 가죽여권케이스
- 무료복원
- LG워치
- 오드컨테이너
- 증여세셀프신고
- 커플여권케이스
- 미성년자녀증여세
- 글자수 세는 프로그램
- 워치어베인 2nd edition
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함