#include
#include
#include
typedef struct tnode{
int data;
tnode* left_child;
tnode* right_child;
}tnode_str;
tnode_str* root;
void inorder(tnode_str * node);
void preorder(tnode_str * node);
void postorder(tnode_str * node);
void main()
{
tnode_str *n1, *n2, *n3;
// 트리 노드 생성
n1 = (tnode_str*)malloc(sizeof(tnode_str));
n2 = (tnode_str*)malloc(sizeof(tnode_str));
n3 = (tnode_str*)malloc(sizeof(tnode_str));
// n1 노드의 값에 10을 저장
// n1 노드의 왼쪽 링크에 n2 연결
// n1 노드의 오른쪽 링크에 n3 연결
n1->data = 10;
n1->left_child = n2;
n1->right_child = n3;
// n2 노드의 값에 20을 저장
// n2 노드의 왼쪽 링크에 NULL 값을 준다
// n2 노드의 오른쪽 링크에 NULL 값을 준다
n2->data = 20;
n2->left_child = NULL;
n2->right_child = NULL;
// n3 노드의 값에 30을 저장
// n3 노드의 왼쪽 링크에 NULL 값을 준다
// n3 노드의 오른쪽 링크에 NULL 값을 준다
n3->data = 30;
n3->left_child = NULL;
n3->right_child = NULL;
// 10
// ┌─┴─┐
// 20 30
// 트리의 시작을 알리는 root를 n1 에 연결
root = n1;
// 중위 표기로 출력
printf("\ninorder\n");
inorder(root);
// 전위 표기로 출력
printf("\npreorder\n");
preorder(root);
// 후위 표기로 출력
printf("\npostorder\n");
postorder(root);
}
//중위 표기
void inorder(tnode_str * node)
{
if(node)
{
inorder(node->left_child);
printf("%d\n",node->data);
inorder(node->right_child);
}
}
// 전위 표기
void preorder(tnode_str * node)
{
if(node){
printf("%d\n",node->data);
preorder(node->left_child);
preorder(node->right_child);
}
}
// 후위 표기
void postorder(tnode_str * node)
{
if(node)
{
postorder(node->left_child);
postorder(node->right_child);
printf("%d\n",node->data);
}
}
친구가 정보처리기사를 공부하다가 중위식에 대해서 이야기 하는 도중에 C언어로 만들어본 트리구조!!;
자료구조를 공부할 때에는 중요한 줄 몰랏었는데;; ^^;;