我正在写一个二叉树,开始收到错误,所以我已经删除了所有的模板,但它仍然无法编译,被我最后的错误所困扰! 编写递归添加函数,但不确定如何在找到空节点时将我的新dataClass添加到树中
#pragma once
#include <cstring>
typedef dataClass T;
//template <class T>
class treeNode
{
private:
treeNode* _greaterNode;
treeNode* _lessNode;
T _data;
public:
treeNode(T data);
void add(T data);
void del(T data);
};
//template <class T>
treeNode/*<T>*/::treeNode(T data)
{
_data = data;
_greaterNode = _lessNode = NULL;
}
//template <class T>
void treeNode/*<T>*/::add(T data)
{
if(_data == NULL)
{
// add here
this = new treeNode(data);
}
else if(data > _data)
{
// data is bigger go to greater
this->_greaterNode->add(data);
}
else if(data < _data)
{
// data is lower go to less than
this->_lessNode->add(data);
}
else
{
// data the same, throw exception
}
}
它正在突破:
if(_data == NULL)
{
// add here
this = new treeNode(data);
}
答案 0 :(得分:0)
您无法分配到this
!您可以像*this
一样向*this = treenode(data);
求助,但这可能会导致其他错误,因为节点指针会被覆盖。
为什么不简单地将_data
设置为参数data
?
此外,在进行递归调用时,如果链接不存在,则应创建链接:
else if(data > _data)
{
// data is bigger go to greater
if (this->_greaterNode == NULL)
this->_greaterNode = new treeNode(data);
else
this->_greaterNode->add(data);
}