gpt4 book ai didi

C++ 作业 - 二叉搜索树帮助

转载 作者:太空狗 更新时间:2023-10-29 21:07:48 25 4
gpt4 key购买 nike

对于初学者来说,这是家庭作业,我真的需要二叉搜索树方面的帮助。

程序是为了体现多态性,使用person作为抽象基类,其他类型的people继承Person。每个人都有一个姓氏,我正在尝试使用二叉搜索树按姓氏对人员进行字母排序。

我已经写了我认为应该是可接受的二叉搜索树,但我仍然遇到错误。二叉搜索树只需要有插入和遍历功能即可。哪个应该是递归的。

我得到的错误是:错误 19 error C4430:缺少类型说明符 - int assumed bst.cpp

这发生在第 51、64 和 70 行。这是我的代码:

头文件:

#ifndef BST_H
#define BST_H

template <class T>
class BST
{
private:
class BinNode
{
public:
BinNode(void);
BinNode(T node);

BinNode *left;
BinNode *right;
T data;
};

BinNode* root;

public:
BST();
~BST();

void insert(const T &);
void traverse();
void visit(BinNode *);


//Utlity Functions
private:
void insertAux(BinNode* &, BinNode *);
void traverseAux(BinNode *, ostream &);
};

#include "BST.cpp"
#endif

执行文件:

 #include <iostream>
#include <string>

using namespace std;

#ifdef BST_H

template <class T>
BST<T>::BinNode::BinNode()
{
left = right = 0;
}

template <class T>
BST<T>::BinNode::BinNode(T node)
{
left = right = 0;
data = node;
}

template <class T>
BST<T>::BST()
{
root = 0;
}

template <class T>
void BST<T>::insertAux(T i, BinNode* &subRoot)
{
//inserts into empty tree
if(subRoot == 0)
subRoot = new BinNode(i);
//less then the node
else if(i<subRoot->data)
insertAux(i, subRoot->left);
//greater then node
else
insertAux(i, subRoot->right);
}

template <class T>
void BST<T>::insert(const T &i)
{
insertAux(T i, root)
}

template <class T>
BST<T>::traverse()
{
traverseAux(root);
}

template <class T>
BST<T>::traverseAux(BinNode *subRoot)
{
if (subRoot == 0)
return;
else
{
traverseAux(subRoot->left);
visit(subRoot);
traverseAux(subRoot->right);
}
}

template <class T>
BST<T>::visit(BinNode *b)
{
cout << b->data << endl;
}

#endif

是否有人可以帮我快速浏览一下并给我一些提示?现在真的让我很困惑。谢谢!

最佳答案

您在某些函数定义中省略了返回类型。

例如:

template <class T>
BST<T>::traverse()
{
traverseAux(root);
}

应该是:

template <class T>
void BST<T>::traverse()
{
traverseAux(root);
}

关于C++ 作业 - 二叉搜索树帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362202/

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