gpt4 book ai didi

c++ - 在 C++ 中解析公共(public)函数时的编译错误

转载 作者:行者123 更新时间:2023-11-28 06:07:10 26 4
gpt4 key购买 nike

我正在尝试一个经典的编程面试问题。这个想法是从一个排序的数组创建一个平衡的二叉树(或最小高度的树)。这是我的节点类。

class node{

public:
node(int data):value(data), left(nullptr), right(nullptr){}

node* sortedArrayToBinaryTree(int arr[], int start, int end){

if(start > end) return nullptr;

int mid = (start + end)/2;

node* p = new node(arr[mid]);
p->left = sortedArrayToBinaryTree(arr, start, mid-1);
p->right = sortedArrayToBinaryTree(arr, mid+1, end);
return p;

}

void preorder(node* root){
if(root == nullptr) return;
std::cout<<root->value<<" "<<std::endl;
preorder(root->left);
preorder(root->right);
}
private:
int value;
node* left;
node* right;
};

我有理由相信我的逻辑是正确的。然而,问题是当我编写客户端代码来测试节点类中的公共(public)方法的功能时,我没有得到解决。

int main() {

int arr[] = {2,7,9,13,19,21};

node* root = sortedArrayToBinaryTree();
preorder();

return 0;
}

我得到以下编译错误。

error: use of undeclared identifier 'sortedArrayToBinaryTree'
node* root = sortedArrayToBinaryTree(arr, 0, 5);
^
main.cpp:10:5: error: use of undeclared identifier 'preorder'
preorder();
^
2 errors generated.

最佳答案

您不仅忘记了将实际参数传递给函数,而且忘记了这些非静态成员函数(方法)需要调用类实例这一事实。我没看到。

然而,将 sortedArrayToBinaryTreepreorder 设为 node 的成员是没有意义的。如果你正在制作一棵树,应该有类 tree 负责排序/排序等......因此,逻辑不正确。

关于c++ - 在 C++ 中解析公共(public)函数时的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com