在这段代码中,我需要创建一个函数,它将在我的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]);
}
答案 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;
}
希望得到这个帮助。