BST; BST元素的总和大于其直接子元素的总和]] << [

问题描述 投票:0回答:1
因此,任务是编写一个函数,该函数返回的BST元素之和大于其直接子元素之和。不计算叶节点。我是这样做的,当树为空时,基本情况返回0,如果没有儿子,则返回0。然后,我检查节点是否有一个或两个儿子以及求和的条件。

int sum(struct node* root) { if (root== NULL) return 0; if (root->right == NULL && root->left==NULL) return 0; if (root->right!= NULL && root->left != NULL) { if (((root->right)->key + (root->left)->key) < root->key) return root->key; } if (root->right != NULL && root->left==NULL) { if ((root->right)->key< root->key) return root->key; } if (root->left != NULL && root->right==NULL) { if ((root->left)->key < root->key) return root->key; } else return sum(root->right) + sum(root->left); }

主要:

struct node* root = NULL; add(&root,-4); add(&root,6); add(&root,8); add(&root,-11); add(&root,5); add(&root,7); add(&root,-20); printf("%d",sum(root));

它应该返回-1(6 + 8-11-4),但是我的功能不起作用,我不知道为什么。

因此,任务是编写一个函数,该函数返回的BST元素之和大于其直接子元素之和。不计算叶节点。我是这样做的,当...

c function binary-search-tree
1个回答
0
投票
在您的代码中,将永远不会执行else子句;您以前的条件处理了所有可能性。
© www.soinside.com 2019 - 2024. All rights reserved.