본문 바로가기
자료구조

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

by chaechaekim 2019. 6. 11.
//	  15
//  4   20
//1	  16   25
#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) {
	if (root) {
		inorder(root->left);
		printf("%3d", root->data);
		inorder(root->right);
	}
}

void preorder(TreeNode *root) {
	if (root) {
		printf("%3d", root->data);
		preorder(root->left);
		preorder(root->right);
	}
}

void postorder(TreeNode *root) {
	if (root) {
		postorder(root->left);
		postorder(root->right);
		printf("%3d", root->data);
	}
}

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

/*

  1  4 15 16 20 25
 15  4  1 20 16 25
  1  4 16 25 20 15

--------------------------------
Process exited after 0.01529 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .

*/

'자료구조' 카테고리의 다른 글

연결리스트 깊이 탐색  (0) 2019.08.16
그래프 p.93  (0) 2019.08.12
변수 값 교환 함수  (0) 2019.05.21
포인터 제 1 법칙 (law1.c)  (0) 2019.05.20
포인터 실습 2 toOne.c  (0) 2019.05.20

댓글