为什么我的函数(在二叉树上)打印出意想不到的结果?

时间:2017-09-10 13:26:04

标签: c++ function binary-tree

我想要一个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);
}

任何人都可以解释一下吗?

1 个答案:

答案 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);

}