Для школьного задания мне нужно взять двоичное дерево поиска и преобразовать его в двухпоточное дерево двоичного поиска.У меня есть общее представление о том, как работают потоки, но я понимаю, что для того, чтобы узнать, где именно находятся потоки, мне нужно знать родителя последнего вставленного узла (prev), а также родителя этого узла какхорошо (два назад).Однако в моих попытках изменить одну из функций, чтобы сохранить эти значения, я не могу получить то, что ищу.
Если кто-то может точно указать, что я делаю неправильно, и объяснитьэто для меня, чтобы я мог учиться на своих ошибках, я был бы очень признателен.Спасибо!
Обе эти функции являются частью класса для самого BST:
void insert(const Key& k, const E& e)
{
root = inserthelp(root, k, e);
nodecount++;
}
BSTNode<Key, E>* BST<Key, E>::inserthelp(BSTNode<Key, E>* root, const Key& k, const E& it)
{
if (root == NULL) // Empty tree: create node
{
return new BSTNode<Key, E>(k, it, NULL, NULL);
}
if (k < root->key())
{
if (prev != NULL)
twoBack = prev;
prev = root;
root->setLeft(inserthelp(root->left(), k, it));
}
else
{
if (prev != NULL)
twoBack = prev;
prev = root;
root->setRight(inserthelp(root->right(), k, it));
}
return root; // Return tree with node inserted
}