왼쪽자식+오른쪽 자식+루트 순으로 탐색하는 후위순회를 이용해 트리구조처럼 되어있는 컴퓨터의 디렉토리 용량을 계산할 수 있습니다.
단, 이진트리임을 가정하므로 각 디렉토리안에 2개를 초과하는 디렉토리 존재X
루트 디렉토리의 왼쪽 서브 디렉토리의 총 디렉토리 용량과 오른쪽 서브 디렉토리의 총 디렉토리의 용량을 구하고
그 두개의 용량합에 루트디렉토리의 용량을 합하면 총 디렉토리의 용량이 계산됩니다.
후위순회를 약간 응용하여 쉽게 구현할 수 있습니다.
코드
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 | #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct treeNode { int data; struct treeNode* left, * right; }treeNode; int calc(treeNode* root) { int left_size, right_size; if (root == NULL)return 0; else { left_size = calc(root->left);//후위 right_size = calc(root->right);//후위 return left_size + right_size + root->data;//계산한 용량값을 리턴한다. } } int main() { treeNode n4 = { 500,NULL,NULL }; treeNode n5 = { 200,NULL,NULL }; treeNode n3 = { 100,&n4,&n5 }; treeNode n2 = { 50,NULL,NULL }; treeNode n1 = { 0,&n2,&n3 }; printf("디렉토리의 총 용량은 %d입니다.\n", calc(&n1)); } | cs |
결과
'자료구조 > 트리' 카테고리의 다른 글
쓰레드 이진트리를 이용한 중위 순회 (0) | 2020.05.26 |
---|---|
이진 트리의 연산(노드개수+단말노드개수+높이) (0) | 2020.05.16 |
큐를 이용한 트리의 레벨순회 (0) | 2020.05.16 |
이진트리의 순회 (전위,중위,후위) 구현하기 (0) | 2020.05.16 |