Я создал двоичное дерево из классов в C++. Моя функция вставки нерекурсивна и выглядит следующим образом:Tree Traversal не печатает правильный порядок
bool Tree1::inOrderInsert(int x)
{
TreeNode *parent = NULL;
TreeNode *temp = root;
TreeNode *newNode = new TreeNode(x);
if (root == NULL)
{
root = newNode;
//cout << "Root empty!" << endl;
return true;
}
while (temp != NULL)
{
if (x <= temp->value)
{
parent = temp;
temp = temp->left;
}
else
{
parent = temp;
temp = temp->right;
}
}
if (x <= parent->value)
{
parent->left = newNode;
return true;
}
else
{
parent->right = newNode;
return true;
}
}
Я траверс и распечатать дерево с помощью обхода после заказа с помощью этой функции:
void Tree1::postOrderPrintRec(TreeNode *node)
{
if (node != NULL)
{
preOrderPrintRec(node->left);
preOrderPrintRec(node->right);
cout << "Value: " << node->value << endl;
}
}
вставить и ценность печати в основном, как это:
tree1.inOrderInsert(5);
tree1.inOrderInsert(3);
tree1.inOrderInsert(2);
tree1.inOrderInsert(4);
tree1.inOrderInsert(6);
tree1.inOrderInsert(7);
tree1.postOrderPrintRec(tree1.getRoot());
значения я должен видеть, когда я запускаю код следующим образом: значение: 2 значение: 4 Значение: 3 значение: 7 значение: 6 значение: 5
Тем не менее, я вижу это: значение: 3 значение: 2 значение: 4 значение: 6 значение: 7 значение: 5
Может ли кто-нибудь сказать мне, почему он печатает значения в неправильном порядке?
Включите функцию preOrderPrintRec(). – Steephen