Основы программирования для автоматизированного проектирования и решения творческих задач - 39 стр.

UptoLike

Составители: 

пока не будет обнаружен элемент, у которого указатель на ветвь в направлении перехода содержит кон-
станту NULL. Это и будет место для вставки нового элемента в структуру дерева (создания новой его
ветви).
П р и м е р 34
Последовательность действий, необходимая для вставки нового элемента в бинарное дерево.
struct Tree *first = NULL, *tree;
int key;
scanf("%d", &key);
if (first == NULL)
first = (struct Tree *) malloc(sizeof(struct Tree)),
first->left = first->right = NULL,
first->key = key;
else
{
int i = 1;
tree = first;
while (i)
{
if (key < tree->key)
{
if (tree->left != NULL)
tree = tree->left;
else
tree->left = (struct Tree *)
malloc(sizeof(struct Tree)),
tree = tree->left,
i = 0;
}
else
{
if (tree->right != NULL)
tree = tree->right;
else
tree->right = (struct Tree *) malloc(sizeof(struct Tree)),
tree = tree->right,
i = 0;
}
}
tree->left = tree->right = NULL;
tree->key = key;
}
Удаление элементов бинарного дерева. Эта процедура сопряжена с некоторыми трудностями, вы-
званными необходимостью обеспечения целостности дерева в процессе проведения операции.
Если удаляемый элемент является конечным элементом дерева
(не имеет ни левой, ни правой ветвей), то он удаляется обычным образом. При этом соответствующему
указателю элемента, в ветви которого находится удаляемый элемент, нужно присвоить NULL, так как
эта ветвь удаляется.