C

링크드리스트로 이진트리를 구현하기 [C]

OHDONGHYEON 2022. 5. 23. 20:30
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

typedef struct treeNode{
	char data;
	struct treeNode *left;
	struct treeNode *right;
} treeNode;

treeNode* makeRootNode(char data, treeNode* leftNode, treeNode* rightNode)
{
	treeNode *root =(treeNode *)malloc(sizeof(treeNode));
	root ->data = data;
	root->left = leftNode;
	root->right = rightNode;
	return root;
}

preorder(treeNode* root)
{
	if(root) {
		printf("%c", root->data);
		preorder(root->left);
		preorder(root->right);
	}
}


inorder(treeNode* root)
{
	if(root) {
		inorder(root->left);
		printf("%c", root->data);
		inorder(root->right);
	}
}

postorder(treeNode* root)
{
	if(root) {
		postorder(root->left);
		postorder(root->right);
		printf("%c", root->data);
	}
}

void main()
{
	treeNode* n7 = makeRootNode('D', NULL, NULL);
	treeNode* n6 = makeRootNode('C', NULL, NULL);
	treeNode* n5 = makeRootNode('B', NULL, NULL);
	treeNode* n4 = makeRootNode('A', NULL, NULL);
	treeNode* n3 = makeRootNode('/', n6, n7);
	treeNode* n2 = makeRootNode('*', n4, n5);
	treeNode* n1 = makeRootNode('-', n2, n3);

	printf("\n preorder  : ");
	preorder(n1);
	
	printf("\n inorder   : ");
	inorder(n1);
	
	printf("\n postorder : ");
	postorder(n1);
}

preorder의 실행

inorder의 실행

postorder의 실행 //여기 실수로 post를 in이라고 썼습니다 그래도 구조는 똑같습니다