Skip to content

Instantly share code, notes, and snippets.

@dlgusdn616
Created November 16, 2018 14:17
Show Gist options
  • Save dlgusdn616/e4497bea8f4170475909166db50fa42b to your computer and use it in GitHub Desktop.
Save dlgusdn616/e4497bea8f4170475909166db50fa42b to your computer and use it in GitHub Desktop.
// 디렉토리 용량 계산 프로그램
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct TreeNode {
int data;
struct TreeNode *left, *right;
} TreeNode;
int calc_dir_size(TreeNode *root);
// 아래와 같은 트리 구조를 생성한다.
// n1
// n3 n2
// n4 n5
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_dir_size(&n1));
}
int calc_dir_size(TreeNode *root) {
if (!root) // 존재하지 않는 노드일 경우
return 0;
else {
int left = calc_dir_size(root->left); // 왼쪽 서브트리를 먼저 순회한다.
int right = calc_dir_szie(root->right);// 오른쪽 서브트리를 그 다음으로 순회한다.
return left + right + root->data; // 순회한 노드에 해당하는 데이터를 계속해서 더해간다.
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment