2015-05-19 7 views
1

Как я могу добавить данные из разных узлов вместе? Inserttotree() просто создает новый узел и вводит указанное значение data.Добавление целых чисел из каждого узла дерева

Так что я просто пытаюсь добавить 2 и 3 вместе в функции countquantity().

typedef struct tree_s tree_t; 
typedef int data_t; 

struct tree_s { 
    data_t data; 
    tree_t *left; 
    tree_t *right; 
}; 

int main(int argc, char **argv){ 
    tree_t *tree; 
    tree = NULL; 
    tree = insertToTree(tree, 3); 
    tree = insertToTree(tree, 2); 
    printf("Total: %d\n", countQuantity(tree)); 
    return 0; 
} 

int countQuanity(tree_t *tree){ 
    int i = 0; 
    if(tree == NULL){ 
     return i; 
    } 

    i = tree->data + countQuantity(tree->left); 
    i = tree->data + countQuantity(tree->right); 
    return i; 
} 
+1

Просто подведите итог двум результатам t он поддеревья и текущий узел, например 'i = tree-> data + countQuantity (tree-> left) + tree-> data + countQuantity (tree-> right)' –

+3

вы понимаете, что каким-то образом вы переписываете значение ' i' в 'countQuanity()'? –

+0

@EugeneSh. опубликуйте это как ответ. – rost0031

ответ

2

Результатом является сумма стоимости узла и вычисленных значений обоих поддеревьев:

i=tree->data + countQuantity(tree->left) + countQuantity(tree->right) 
+2

Это добавляет tree-> data дважды ... –

+0

Извините, исправлено –

1

Посмотрите эту часть кода,

i = tree->data + countQuantity(tree->left); 
i = tree->data + countQuantity(tree->right); 
    //The value of i is being over written here 
return i; 

Ваш код должен быть больше, как это,

i = tree->data + countQuantity(tree->left); 
i += countQuantity(tree->right); 
return i; 
+0

@EugeneSh. Исправлено! Извини ! Это была плохая копия! –

Смежные вопросы