2019~2020/자료구조

재귀 알고리즘을 사용한 이진 트리 순회

유진 2019. 6. 11. 10:21
반응형
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>

typedef struct TreeNode{
	int data;
	struct TreeNode *left, *right;
}TreeNode;

TreeNode n1 = {1, NULL, NULL};
TreeNode n2 = {4, &n1, NULL};
TreeNode n3 = {16, NULL, NULL};
TreeNode n4 = {25, NULL, NULL};
TreeNode n5 = {20, &n3, &n4};
TreeNode n6 = {15, &n2, &n5};
TreeNode *root=&n6;

void inorder(TreeNode *root){ //중위 :LVR 
	if (root){
		inorder(root->left);
		printf("%3d",root->data);
		inorder(root->right);
	}
}
//1 4 15 16 20 25

void preorder(TreeNode *root){ //전위 :VLR
	if (root){
		printf("%3d",root->data);
		preorder(root->left);
		preorder(root->right);
	}	
}
//15 14 1 20 16 25

void postorder(TreeNode *root){ //후위 :LRV 
	if (root){
		postorder(root->left);
		postorder(root->right);
		printf("%3d",root->data);
	}	
}
//1 4 16 25 20 15

int main(){
	inorder(root);
	preorder(root);
	postorder(root);
	printf("\n");
	
	return 0;
}
반응형