ВУЗ:
Составители:
Рубрика:
. Практикум по курсу «Алгоритмизация и программирование». Часть 2
help->info=key;
help->left=NULL;
help->right=NULL;
root=help;
return;
}
// определяем, в левое или в правое поддерево узла root
// добавляется новый элемент
if(root->info>key)
// рекурсивный вызов функции
// добавления в левое поддерево
AddTree(root->left,key);
else
// рекурсивный вызов функции
// добавления в правое поддерево
AddTree(root->right,key);
}
Теперь рассмотрим нерекурсивный вариант решения задачи.
В случае, когда дерево пусто, поступаем так же, как и в рекурсивном ва-
рианте.
Иначе перемещаемся по узлам дерева в соответствии с правилами, ис-
пользуя вспомогательную переменную help, до тех пор, пока не определим
место вставляемого элемента. Если help->info больше key, то добавление
нового узла осуществляется при условии, что help->left = NULL. Если
же help->info меньше или равно key, то добавление нового узла осуще-
ствляется, когда help->right=NULL. Новый узел связывается с узлом
help с помощью надлежащего указателя (help->left или help-
>right).
// определение нерекурсивной функции добавления
// в дерево нового элемента
void AddTree(Tree*& root, int key)
{
Tree *help,*newNode;
// если дерево пусто, формируем корень дерева
if(root==NULL)
{
root = new Tree;
root->info=key;
root->left=NULL;
root->right=NULL;
return;
93
. Практикум по курсу «Алгоритмизация и программирование». Часть 2
help->info=key;
help->left=NULL;
help->right=NULL;
root=help;
return;
}
// определяем, в левое или в правое поддерево узла root
// добавляется новый элемент
if(root->info>key)
// рекурсивный вызов функции
// добавления в левое поддерево
AddTree(root->left,key);
else
// рекурсивный вызов функции
// добавления в правое поддерево
AddTree(root->right,key);
}
Теперь рассмотрим нерекурсивный вариант решения задачи.
В случае, когда дерево пусто, поступаем так же, как и в рекурсивном ва-
рианте.
Иначе перемещаемся по узлам дерева в соответствии с правилами, ис-
пользуя вспомогательную переменную help, до тех пор, пока не определим
место вставляемого элемента. Если help->info больше key, то добавление
нового узла осуществляется при условии, что help->left = NULL. Если
же help->info меньше или равно key, то добавление нового узла осуще-
ствляется, когда help->right=NULL. Новый узел связывается с узлом
help с помощью надлежащего указателя (help->left или help-
>right).
// определение нерекурсивной функции добавления
// в дерево нового элемента
void AddTree(Tree*& root, int key)
{
Tree *help,*newNode;
// если дерево пусто, формируем корень дерева
if(root==NULL)
{
root = new Tree;
root->info=key;
root->left=NULL;
root->right=NULL;
return;
93
Страницы
- « первая
- ‹ предыдущая
- …
- 91
- 92
- 93
- 94
- 95
- …
- следующая ›
- последняя »
