当我尝试将文件添加到这棵树时,它只会添加为树根的子节点。比较运算符已正确重载(经过测试)。
任何人都可以看到我的代码有任何明显错误吗?
template <typename Item>
void BTtree<Item>::addNode(const Item& newItem)
{
BTnode<Item> *newNode = new BTnode<Item>(newItem);
insert(newNode, root_ptr);
}
template <typename Item>
void BTtree<Item>::insert(BTnode<Item> *newNode, BTnode<Item> *root)
{
if(root == NULL)
{
root = newNode;
std::cout << "Flight added: ";
std::cout << *root << std::endl;
return;
}
else
{
if(newNode < root )
{
std::cout << "Adding "<<*newNode<< " left child of " << *root << std::endl;
insert(newNode, root->left() );
}
else
{
std::cout << "Adding "<<*newNode<<" right child of " << *root << std::endl;
insert(newNode, root->right());
}
}
}
编辑:为重载运算符提供代码
template <typename Item>
bool BTnode<Item>::operator < (const BTnode<Item>& other)
{
return ( *data < other.data );
}
对于我正在使用的对象
const bool Flight::operator < (const Flight& other) const
{
return ( (arrivalTimeHours < other.arrivalTimeHours) ||
(arrivalTimeHours == other.arrivalTimeHours &&
arrivalTimeMinutes < other.arrivalTimeMinutes)
);