아마, 대학교 자료구조 시간에 공부한 이진트리 관련된 자료일겁니다.

지금은 오래되서, 개념잡기도 힘들지만, 학생들은 레포트 자료로 참고하세요 ㅋㅋ 이런 과제 많이 나오죠?? ㅎㅎ


# include<stdio.h>
# include <conio.h>
# include <malloc.h>

struct node
{
	struct node *left;
	int data;
	struct node *right;

};


void main()
{

	void insert(struct node **,int);

	void inorder(struct node *);

	void postorder(struct node *);

	void preorder(struct node *);

	struct node *ptr;

	int will,i,num;

	ptr = NULL;

	ptr->data=NULL;

	clrscr();

	printf("Program for Tree Traversal Demo	@ Amit Mathur");

	printf("Enter the number of terms you want to add to the tree.");

	scanf("%d",&will);



	/* Getting Input */

	for(i=0;i<will;i++)
	{

		printf("Enter the item");

		scanf("%d",&num);

		insert(&ptr,num);

	}



	getch();

	printf("INORDER TRAVERSAL");

	inorder(ptr);

	getch();

	printf("PREORDER TRAVERSAL");

	preorder(ptr);

	getch();

	printf("POSTORDER TRAVERSAL");

	postorder(ptr);

	getch();

}



void insert(struct node  **p,int num)
{

	if((*p)==NULL)
	{       
		printf("Leaf node created.");

		(*p)=malloc(sizeof(struct node));

		(*p)->left = NULL;

		(*p)->right = NULL;

		(*p)->data = num;

		return;

	}
	else
	{       
		
		if(num==(*p)->data)
		{

			printf("REPEATED ENTRY ERROR VALUE REJECTED");
			return;

		}

		if(num<(*p)->data)
		{
			printf("Directed to left link.");
			insert(&((*p)->left),num);
		}
		else
		{
			printf("Directed to right link.");
			insert(&((*p)->right),num);
		}

	}

	return;

}





/* Tree Traversal Functions*/

////////////// INORDER (LDR) ////////////
void inorder(struct node *p)

{

	if(p!=NULL)
	{

		inorder(p->left);
		printf("Data :%d",p->data);
		inorder(p->right);

	}
	else
		return;

}



////////////// PREORDER (DLR) ////////////
void preorder(struct node *p)
{

	if(p!=NULL)
	{
		printf("Data :%d",p->data);
		preorder(p->left);
		preorder(p->right);
	}
	else
		return;

}




////////////// POSTORDER (LRD) ////////////
void postorder(struct node *p)
{

	if(p!=NULL)
	{
		postorder(p->left);

		postorder(p->right);

		printf("Data :%d",p->data);

	}
	else
		return;

}