수식(A*B-C/D)에 대한 이진 트리를 연결 자료구조를 사용하여 표현하고 전위,중위, 후위 순회에 따른 경로를 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #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; } void preorder(treeNode* root) { if (root) { printf("%c", root->data); preorder(root->left); preorder(root->right); } } void inorder(treeNode* root) { if (root) { inorder(root->left); printf("%c", root->data); inorder(root->right); } } void 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); getchar(); } | cs |
출력결과
[출처] (C) 이진 트리의 순회 프로그램|작성자 길가다주은노트북
'프로그래밍 > C' 카테고리의 다른 글
(C언어) 소켓 프로그램 (1) | 2016.07.09 |
---|---|
(C언어) 파일입출력 (0) | 2016.07.09 |
(C언어) 순차 자료구조를 이용한 최대 히프 프로그램 (0) | 2016.07.09 |
(C언어) 이진 탐색 트리의 연산 프로그램 (0) | 2016.07.09 |
(C언어) 큐를 이용한 서비스 요청 고객 관리 프로그램 (0) | 2016.07.09 |