Á¤¼ºÈÆ
    ½Ç½À ÇÁ·Î±×·¥ ¿¹)
tree.txt [3 KB]   tree.pptx [78 KB]  



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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
 
typedef struct TreeNode {
    int data;
    struct TreeNode *left, *right;
} TreeNode;
 
TreeNode n1 = { 27,  NULLNULL };
TreeNode n2 = { 34,  NULLNULL };
TreeNode n3 = { 5,  NULLNULL };
TreeNode n4 = { 7,  NULLNULL };
TreeNode n5 = { 78,  NULLNULL };
TreeNode n6 = { 20,  NULLNULL };
TreeNode n7 = { '+',  &n1,  &n2 };
TreeNode n8 = { '*'&n7, &n3 };
TreeNode n9 = { '-'&n5, &n6};
TreeNode n10 = { '/'&n4,  &n9 };
TreeNode n11 = { '-'&n8,  &n10 };
TreeNode *root = &n11;
 
int get_height(TreeNode *node)
{
    int height = 0;
    if (node != NULL)
        height = 1 + max(get_height(node->left),
            get_height(node->right));
    return height;
}
 
int get_leaf_count(TreeNode *node)
{
    int count = 0;
 
    if (node != NULL) {
        if (node->left == NULL && node->right == NULL)
            return 1;
        else
            count = get_leaf_count(node->left) +
            get_leaf_count(node->right);
    }
    return count;
}
 
int get_node_count(TreeNode *node)
{
    int count = 0;
    if (node != NULL)
        count = 1 + get_node_count(node->left) +
        get_node_count(node->right);
    return count;
}
 
inorder(TreeNode *root) {
    if (root) {
        int d = root->data;        // ³ëµå ¹æ¹®
 
        if(root->left != NULL || root->right != NULL)
            printf("(");
        inorder(root->left);    // ¿ÞÂʼ­ºêÆ®¸® ¼øȸ
        if (d == '+' || d == '-' || d == '*' || d == '/')
            printf(" %c ", d);
        else
            printf(" %d ", d);    
        inorder(root->right);    // ¿À¸¥Âʼ­ºêÆ®¸® ¼øȸ
        if (root->left != NULL || root->right != NULL)
            printf(")");
    }
}
 
double evaluate(TreeNode *root)
{
    if (root == NULL)    return 0;
    if (root->left == NULL && root->right == NULL)return root->data;
    else {
        double op1 = evaluate(root->left);
        double op2 = evaluate(root->right);
        printf("(%10lf %c %10lf)À» °è»êÇÕ´Ï´Ù.\n", op1, root->data, op2);
        switch (root->data) {
        case '+':    return op1 + op2;
        case '-':    return op1 - op2;
        case '*':    return op1 * op2;
        case '/':    return (double)op1 / (double)op2;
        }
    }
    return 0;
}
 
int main(void)
{
    printf("Æ®¸®ÀÇ ³ôÀÌ: %d \n", get_height(root));
    printf("Æ®¸®ÀÇ ´Ü¸»³ëµå °³¼ö: %d \n", get_leaf_count(root));
    printf("Æ®¸®ÀÇ Àüü³ëµå °³¼ö: %d \n\n", get_node_count(root));
 
    printf("¼øȯȣÃâ·Î ÁßÀ§ ¼øȸ \n");
    inorder(root);
 
    printf("\n\n");
    printf("¼ö½ÄÆ®¸® °è»ê °á°ú: %lf\n", evaluate(root));
}
cs

  µî·ÏÀÏ : 2020-11-12 [16:37] Á¶È¸ : 258 ´Ù¿î : 309   
 
¡â ÀÌÀü±Û(½Ç½À 11) Æ®¸®
¡ä ´ÙÀ½±Û(½Ç½À 10) ¾ß±¸°ÔÀÓ
ÀڷᱸÁ¶ ½Ç½À°Ô½ÃÆÇ
¹øÈ£ ¨Ï Á¦ ¸ñ
[Âü°í] ±³Àç¿¡ ÀÖ´Â ¼Ò½ºÄÚµå
63 ¨Õ(½Ç½À 12) ¹®ÀÚ¿­ ã±â
62 ¦¦❶ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
61 ¨Õ(½Ç½À 11) Æ®¸®
60 ¦¦❶ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
59 ¨Õ(½Ç½À 10) ¾ß±¸°ÔÀÓ
58 ¦¦❶ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
57    ¦¦❷ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
56 ¨Õ(½Ç½À 9) ¿¬°á ¸®½ºÆ®
55 ¦¦❶ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
54    ¦¦❷ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
53       ¦¦❸ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
52          ¦¦❹ ¿øÇü ¿¬°á ¸®½ºÆ®¿¡¼­ print_list() ÇÔ¼ö ¹ö±× ¹®Á¦
51             ¦¦❺ ¹ö±× ÀÖ´Â ±³Àç ÇÁ·Î±×·¥°ú ¹ö±×¸¦ ¼öÁ¤ÇÑ ¿Ã¹Ù¸¥ ÇÁ·Î±×·¥
50 ¨Õ(½Ç½À 8) ½Ã¹Ä·¹À̼Ç
49 ¦¦❶ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
48    ¦¦❷ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
47       ¦¦❸ ½Ç½À ÇÁ·Î±×·¥ ¿¹)
46          ¦¦❹ Ç׸ñ º° ¿ì¼±¼øÀ§¸¦ µÎ¾î¼­ ¿ì¼±¼øÀ§¿¡ µû¶ó¼­ ó¸®Çϵµ·Ï º¯°æ (Ãß°¡)
45             ¦¦❺ ¨Õ½Ç½À ÇÁ·Î±×·¥ ¿¹) ºñ°ø°³
44 ¨Õ(½Ç½À 7) ¹Ì·Îã±â

[1][2][3][4]