BEX*_*BEX -1 c binary-tree nodes
如何返回树中所有奇数的总和?我必须使用递归来查找总和吗?
这是我的代码:
int sumOdd(BTreeNode *node)
{
int sum = 0;
if(node == NULL)
return 0;
else{
if((node->item % 2) != 0)
return sum = node->item +
sumOdd(node->left) +
sumOdd(node->right);
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
这将是这样的 -
int sumOdd(BTreeNode *node)
{
int sum = 0;
if(node != NULL)
{
if((node->item % 2) != 0)
sum += node->item;
sum+=sumOdd(node->left);
sum+=sumOdd(node->right);
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
在计算子节点之前,您不需要返回.
你可以用单一方法完成,不需要重写另一个,因为正在解决相同的子问题.
你会这样称呼它
int sum = sumOdd(root);
Run Code Online (Sandbox Code Playgroud)
你也可以修改sum.为此,您需要更改方法以合并int*和传递地址.