【问题标题】:binary search tree "contains" function二叉搜索树“包含”功能
【发布时间】:2013-08-06 20:55:58
【问题描述】:

尝试为二叉树创建包含函数。

函数如下所示:

    bool contains(bt_node* top, int data) {
    if (top == NULL) return false;
    else {
        if (data == top->data) return true;
        else if (data < top->data) contains(top->left, data);
        else if (data > top->data) contains(top->right, data);
    }
}

该函数为实际存在于树中的值返回 false。有人可以帮忙吗?

谢谢,

最大

【问题讨论】:

  • 编译器非常擅长警告此类事情。您是否打开了警告?

标签: c++ c binary-search-tree


【解决方案1】:

您忘记将递归调用的值返回给contains。所以你的函数的返回值是未定义的。将其更改为以下内容以使其工作:

bool contains(bt_node* top, int data) {
  if (top == NULL) return false;
  else {
    if (data == top->data)
      return true;
    else if (data < top->data)
      return contains(top->left, data);      //you forgot to return the value
    else if (data > top->data)
      return contains(top->right, data);
  }
}

【讨论】:

  • 错了。谢谢!我写到这里后才意识到我没有退回它。
【解决方案2】:

不过,你本可以做得更好:

bool contains(bt_node* top, int data) {
    if (top == NULL) return false;
    if (data == top->data) return true;
    if (data < top->data)  return contains(top->left, data);    
    return contains(top->right, data);
}

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    相关资源
    最近更新 更多