【问题标题】:adding integers from each node of a tree从树的每个节点添加整数
【发布时间】:2015-05-19 16:20:40
【问题描述】:

如何将来自不同节点的数据添加到一起? Inserttotree() 只是创建一个新节点并输入指定的data 值。

所以基本上我只是想在countquantity() 函数中添加2 和3。

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;
}

【问题讨论】:

  • 把子树和当前节点的两个结果相加就好了i=tree->data + countQuantity(tree->left) + tree->data + countQuantity(tree->right)
  • 您知道您以某种方式覆盖了i 在countQuanity() 中的值吗?
  • @EugeneSh。将其发布为答案。
  • @WhozCraig 是的,谢谢。懒惰的复制/粘贴..

标签: c recursion struct tree


【解决方案1】:

结果是节点的值和两个子树的计算值之和:

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

【讨论】:

    【解决方案2】:

    看看这部分代码,

    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;
    

    【讨论】:

    • @EugeneSh。更正了!对不起 !那是一个糟糕的复制粘贴!
    猜你喜欢
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    相关资源
    最近更新 更多