所以我的代码如下。我没有收到任何错误,它将所有内容都放在节点中就好了。但是根据我的调试语句,每次插入任何东西时,它都会找到根。我不确定这是否正确。但是根据作业的输出文件,当涉及到树的高度、遍历时,我的答案是不同的,而且我的叶子计数功能仍然存在问题。另一个故事。
根据调试语句,看起来一切都在他们应该的地方进行。但我想我可能需要新鲜的眼睛。我根本看不到我的遍历会如何改变,因为这实际上只是我在哪里处理应该影响中序、前序和后序的节点的问题。
template <class T>
void BT<T>::insert(const T& item)
{
Node<T>* newNode;
newNode = new Node<T>(item);
insert(root, newNode);
}
template <class T>
void BT<T>::insert(struct Node<T> *&root, struct Node<T> *newNode)
{
if (root == NULL)
{
cout << "Root Found" << newNode->data << endl;
root = newNode;
}
else
{
if (newNode->data < root->data)
{
insert(root->left, newNode);
cout << "Inserting Left" << newNode-> data << endl;
}
else
{
insert(root->right, newNode);
cout << "Inserting Right" << newNode->data << endl;
}
}
}
我的高度函数如下,以防我的插入实际上很好。
template <class T>
int BT<T>::height() const
{
return height(root);
}
template <class T>
int BT<T>::height(Node<T>* root) const
{
if (root == NULL)
return 0;
else
{
if (height(root->right) > height(root->left))
return 1 + height(root-> right);
return 1 + height(root->left);
}
}