在BST中统一偶数

时间:2016-05-14 10:08:16

标签: c binary-search-tree

在这段代码中,我需要创建一个函数,它将在我的BST中对偶数求和。我不知道如何传递树的所有节点。这是代码:

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int key;
    struct node *left, *right;
};

struct node *newNode(int item) {
struct node *temp=(struct node *)malloc(sizeof(struct node));
    temp->key = item;
    temp->left = temp->right = NULL;
    return temp;
}

struct node* insert(struct node* node, int key) {
    if (node == NULL) return newNode(key);
    if (key < node->key)
        node->left = insert(node->left, key);
    else
        node->right = insert(node->right, key);
    return node;
}

void main(void)
{
    struct node *root = NULL;
    int data[]={3,1,2,6,4,7,8}, n, i;
    n=sizeof(data)/sizeof(data[0]);
    for(i=0;i<n;i++)
        root=insert(root,data[i]);
}

2 个答案:

答案 0 :(得分:1)

尝试这样的事情。对不起,手头没有C编译器。

int sum(struct node *root) {
   if (root == NULL) {
     return 0;
   }
   int value = 0;
   if (root->key % 2 == 0) {
      value = root->key;
   }
   return value + sum(root->left) + sum(root->right);
}

答案 1 :(得分:0)

您需要执行其中一个不同的搜索,BFS或DFS,以便在树的每个节点中进行搜索。在每一刻你都应该保存偶数的实际总和。比较应该像

if(node->key % 2 == 0){
    final += node->key;
}

希望得到这个帮助。