我想要一个make函数,它将参数化为二进制树,t和两个整数a,b,并打印a和b之间的整数...
这里的示例是一个二叉树,有三个节点和数据: 10,15,20。 我把这个函数称为例如:在(t,10,20)之间,结果我期望数字1,但这不会发生.. 我的职责是:
`
int between (tree t, int a, int b) {
if (t== NULL)
return 0;
if ((t->data >a ) && ( t->data <b))
return 1 + between(t->left,a,b) + between(t->right,a,b);
}
任何人都可以解释一下吗?
答案 0 :(得分:0)
首先,如果数字不在a和b之间,你还没有定义一个返回值,这是一个错误,而不是你的程序没有做它所需要的,但函数不会返回{{1} }值。
其次,当值不在您的范围内时,您应该继续。 你的功能应如下所示:
int
更好的是, IF 左侧的值低于右侧(搜索树)的值,您可以进行改进。
int between (tree t, int a, int b) {
if (t== NULL)
return 0;
if ((t->data >a ) && ( t->data <b))
return 1 + between(t->left,a,b) + between(t->right,a,b);
else return between(t->left,a,b) + between(t->right,a,b);
}