我现在正在使用朋友类在C中创建二叉树 .
但是,有些事情是错的,我不知道应该改变什么
template <class Type>
class BinaryTree{
public:
BinaryTree(){
root = new BTNode<Type>();
currentNode = NULL;
}
~BinaryTree(){
delete root, currentNode;
};
void insertItem(Type data){
if(currentNode==NULL){
Item = data;
currentNode = root;
}
if(data<currentNode){
if(currentNode->Left.is_empty()){
currentNode->Left = new BTNode(data);
currentNode = root;
return;
}
else{
currentNode = currentNode->Left;
return insertItem(data);
}
}
if(data>currentNode){
if(currentNode->Right.is_empty()){
currentNode->Right = new BTNode(data);
currentNode = root;
return;
}
else{
currentNode = currentNode->Right;
return insertItem(data);
}
}
currentNode = root;
return;
}
void deleteItem(Type data){}
void is_empty(){
if (this == NULL) return 1;
else return 0;
}
void printInOrder(){
if(!(currentNode->Left).is_empty()){
currentNode = currentNode->Left;
}
}
private:
BTNode<Type>* currentNode;
BTNode<Type>* root;
};
这里是存储BinaryTree项的BTNode类,并指向下一个Node:
template <class Type>
class BTNode{
public:
friend class BinaryTree<Type>;
BTNode(){}
BTNode(Type data){
Item = data;
}
~BTNode(){}
private:
Type Item;
BTNode<Type> *Left, *Right;
};
二进制树类的BTNode *根指向第一个节点,而currentNode将在执行诸如插入或合并节点之类的操作时指向“当前节点” .
但是当我编译时,编译器错误C2143发生在BinaryTree类中,这里:
BTNode<Type>* root;
BTNode<Type>* currentNode;
错误说 <
前面没有toke ;
,但我不知道出了什么问题
1 回答
看起来似乎
BTNode
未在BinaryTree
类中正确定义 . 编译器不理解BTNode
是一种类型 . 确保正确包含和链接文件 .