我已经为此奋斗了一段时间并环顾四周,但我不确定我做错了什么
错误:
错误:“.”标记之前应有主表达式
addElement 方法内的大部分代码都会弹出
涉及 BinaryNode.variable 但我完全不知道在这里要做什么
#include <cstdlib>
#include "BinarySearchTree.h"
using namespace std;
template <typename Comparable>
BinarySearchTree<Comparable>::BinarySearchTree(const Comparable & theElement, BinarySearchTree<Comparable> *leftTree,
BinarySearchTree<Comparable> *rightTree) : BinaryNode(theElement,leftTree,rightTree) {
}
template <typename Comparable>
void BinarySearchTree<Comparable>::addElement(Comparable newElement) {
if(newElement < BinaryNode.element) {
if(BinaryNode.left == NULL) {
BinaryNode.left = BinarySearchTree(newElement, NULL, NULL);
BinaryNode.right.root = BinaryNode;
} else {
BinaryNode.left.addElement(newElement);
}
} else if (newElement > BinaryNode.element) {
if(BinaryNode.right == NULL) {
BinaryNode.right = BinarySearchTree(newElement, NULL, NULL);
BinaryNode.right.root = this;
} else {
BinaryNode.right.addElement(newElement);
}
}
这是 BinarySearchTree 的头文件
#include <vector>
using namespace std;
template<typename Comparable>
class BinarySearchTree {
public:
BinarySearchTree(const Comparable & theElement, BinarySearchTree<Comparable> * leftTree,
BinarySearchTree<Comparable> * rightTree);
void addElement(Comparable newElement);
void removeElement(Comparable newElement);
BinarySearchTree<Comparable> * findElement(Comparable newElement);
bool isEmpty();
BinarySearchTree & operator=(const BinarySearchTree &tree);
vector<BinarySearchTree> preOrder(vector<BinarySearchTree> * list);
vector<BinarySearchTree> inOrder();
vector<BinarySearchTree> postOrder();
private:
struct BinaryNode {
Comparable element;
BinarySearchTree<Comparable> *left;
BinarySearchTree<Comparable> *right;
BinaryNode( const Comparable & theElement, BinarySearchTree<Comparable> *leftTree,
BinarySearchTree<Comparable> *rightTree) : element(theElement), left(leftTree), right(rightTree){}
};
BinaryNode *root;
};