Нет ничего лучше, чтобы сделать этот рождественский праздник, поэтому я решил попробовать создать бинарное дерево поиска.Я застрял с функцией печати.Как должна работать логика?Так как дерево уже вставляет его в несколько отсортированном порядке, и я хочу напечатать дерево от самых маленьких значений до самых больших.
Поэтому мне нужно перейти к самой дальней левой ветви дерева, чтобы напечатать первуюзначение.Итак, после этого, как я могу вспомнить путь резервного копирования, мне нужно сохранить предыдущий узел?Поиск в википедии дал мне решение, которое они использовали стек.И другие решения, которые я не мог понять, как они сделали это, поэтому я спрашиваю здесь, вместо этого, надеясь, что кто-то может осветить меня.
Мне также интересно, моя функция вставки в порядке.Я видел, что решение другого было меньше.
void treenode::insert(int i)
{
if(root == 0)
{
cout << "root" << endl;
root = new node(i,root);
}
else
{
node* travel = root;
node* prev;
while(travel)
{
if(travel->value > i)
{
cout << "travel left" << endl;
prev = travel;
travel = travel->left;
}
else
{
cout << "travel right" << endl;
prev = travel;
travel = travel->right;
}
}
//insert
if(prev->value > i)
{
cout << "left" << endl;
prev->left = new node(i);
}
else
{
cout << "right" << endl;
prev->right = new node(i);
}
}
}
void treenode::print()
{
node* travel = root;
while(travel)
{
cout << travel->value << endl;
travel = travel->left;
}
}