Так что мой код ниже. Я не получаю никаких ошибок, и он просто помещает все в узел. Но, основываясь на моих утверждениях отладки, каждый раз, когда что-то вставляется, он находит корень. Я не уверен, что это правильно. Но в соответствии с выходным файлом для задания, мои ответы различаются, когда речь идет о высоте дерева, обходах, и у меня все еще есть проблемы с функцией подсчета листьев. Хотя другая история.
Судя по операторам отладки, все выглядит так, как должно. Но я думаю, мне могут понадобиться свежие глаза. Я не понимаю, как мои обходы вообще могут измениться, поскольку на самом деле вопрос только в том, где я обрабатываю узел, который должен влиять на порядок, порядок и порядок.
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);
}
}