// Для заданной последовательности чисел, записанных в строку через пробел во входной текстовый файл
// создать бинарное дерево поиска (реализация на основе массива). Запросить число с клавиатуры и воспользовавшись свойствами
// бинарного дерева поиска ответить на вопрос: есть ли заданное число в последовательности.
// В случае положительного ответа - удалить этот элемент из дерева. Провести прямой, обратный и внутренний обход дерева.
// Массив содержит n элементов, корень - 0-ой элемент, у каждой i-ой вершины есть два потомка: (2i+1)-ая и (2i+2)-ая вершины.
const
size = 20; // Размер
chislo = -1;
type
A = array [0..size] of Integer; // Массив элементов
var
Tree: A;
treeLength, N, i: integer; // Длина массива
procedure PrintDown(y: integer; Tree: A); // Прямой обход - checked
begin
if (y <= treeLength) then
if (Tree[y] <> 0) then
begin
writeln(Tree[y]);
PrintDown(2*y+1, Tree);
PrintDown(2*y+2, Tree);
end;
end;
procedure PrintLex(treeLength: integer; Tree: A); // Обратный
var i : integer;
begin
if (i < treeLength) then
begin
PrintLex((i+1)*2-1, Tree);
writeln(Tree[i]);
PrintLex((i+1)*(2+1)-1, Tree);
end;
end;
procedure PrintUp(treeLength: integer; Tree: A); // Внутренний
var i : integer;
begin
if (i < treeLength) then
begin
PrintUp((i+1)*2-1, Tree);
PrintUp((i+1)*(2+1)-1, Tree);
writeln(Tree[i]);
end;
end;
procedure Find(N: integer; Tree: A); // Поиск
var z, l, r : integer;
begin
for z := 0 to treeLength do
if Tree[z] = N then begin
l := 2 * z + 1;
r := 2 * z + 2;
if (Tree[l] <> 0) or (Tree[r] <> 0) then begin // Если у удаляемого элемента есть сын, то на место удаляемого элемента ставим его левого сына,
Tree[z] := l; // на место сына ставим -1 для сохранения структуры
Tree[l] := chislo;
end
else
Tree[z] := chislo; // Если нет сыновей
end;
end;
begin
read(treeLength);
for i:=0 to treeLength do
Read(Tree[i]);
readln(N);
Find(N, Tree);
writeln('----');
PrintDown(0, Tree);
end.
Ly8gINCU0LvRjyDQt9Cw0LTQsNC90L3QvtC5INC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuCDRh9C40YHQtdC7LCDQt9Cw0L/QuNGB0LDQvdC90YvRhSDQsiDRgdGC0YDQvtC60YMg0YfQtdGA0LXQtyDQv9GA0L7QsdC10Lsg0LLQviDQstGF0L7QtNC90L7QuSDRgtC10LrRgdGC0L7QstGL0Lkg0YTQsNC50LsKLy8gINGB0L7Qt9C00LDRgtGMINCx0LjQvdCw0YDQvdC+0LUg0LTQtdGA0LXQstC+INC/0L7QuNGB0LrQsCAo0YDQtdCw0LvQuNC30LDRhtC40Y8g0L3QsCDQvtGB0L3QvtCy0LUg0LzQsNGB0YHQuNCy0LApLiDQl9Cw0L/RgNC+0YHQuNGC0Ywg0YfQuNGB0LvQviDRgSDQutC70LDQstC40LDRgtGD0YDRiyDQuCDQstC+0YHQv9C+0LvRjNC30L7QstCw0LLRiNC40YHRjCDRgdCy0L7QudGB0YLQstCw0LzQuCAKLy8gINCx0LjQvdCw0YDQvdC+0LPQviDQtNC10YDQtdCy0LAg0L/QvtC40YHQutCwINC+0YLQstC10YLQuNGC0Ywg0L3QsCDQstC+0L/RgNC+0YE6INC10YHRgtGMINC70Lgg0LfQsNC00LDQvdC90L7QtSDRh9C40YHQu9C+INCyINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuC4KLy8gINCSINGB0LvRg9GH0LDQtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7Qs9C+INC+0YLQstC10YLQsCAtINGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGN0LvQtdC80LXQvdGCINC40Lcg0LTQtdGA0LXQstCwLiDQn9GA0L7QstC10YHRgtC4INC/0YDRj9C80L7QuSwg0L7QsdGA0LDRgtC90YvQuSDQuCDQstC90YPRgtGA0LXQvdC90LjQuSDQvtCx0YXQvtC0INC00LXRgNC10LLQsC4gCi8vICDQnNCw0YHRgdC40LIg0YHQvtC00LXRgNC20LjRgiBuINGN0LvQtdC80LXQvdGC0L7Qsiwg0LrQvtGA0LXQvdGMIC0gMC3QvtC5INGN0LvQtdC80LXQvdGCLCDRgyDQutCw0LbQtNC+0LkgaS3QvtC5INCy0LXRgNGI0LjQvdGLINC10YHRgtGMINC00LLQsCDQv9C+0YLQvtC80LrQsDogKDJpKzEpLdCw0Y8g0LggKDJpKzIpLdCw0Y8g0LLQtdGA0YjQuNC90YsuCgoKY29uc3QgCglzaXplID0gMjA7IC8vINCg0LDQt9C80LXRgAoJY2hpc2xvID0gLTE7Cgp0eXBlIAoJQSA9IGFycmF5IFswLi5zaXplXSBvZiBJbnRlZ2VyOyAvLyDQnNCw0YHRgdC40LIg0Y3Qu9C10LzQtdC90YLQvtCyCgp2YXIgCglUcmVlOiBBOwoJdHJlZUxlbmd0aCwgTiwgaTogaW50ZWdlcjsgLy8g0JTQu9C40L3QsCDQvNCw0YHRgdC40LLQsAoKcHJvY2VkdXJlIFByaW50RG93bih5OiBpbnRlZ2VyOyBUcmVlOiBBKTsgLy8g0J/RgNGP0LzQvtC5INC+0LHRhdC+0LQgLSBjaGVja2VkCmJlZ2luCglpZiAoeSA8PSB0cmVlTGVuZ3RoKSB0aGVuCgkgIGlmIChUcmVlW3ldIDw+IDApIHRoZW4KCSAgYmVnaW4KICAgICAgICB3cml0ZWxuKFRyZWVbeV0pOwogICAgICAgIFByaW50RG93bigyKnkrMSwgVHJlZSk7CiAgICAgICAgUHJpbnREb3duKDIqeSsyLCBUcmVlKTsKCSAgZW5kOwplbmQ7Cgpwcm9jZWR1cmUgUHJpbnRMZXgodHJlZUxlbmd0aDogaW50ZWdlcjsgVHJlZTogQSk7IC8vINCe0LHRgNCw0YLQvdGL0LkKdmFyIGkgOiBpbnRlZ2VyOwpiZWdpbgoJaWYgKGkgPCB0cmVlTGVuZ3RoKSB0aGVuCgkgIGJlZ2luCgkgIAlQcmludExleCgoaSsxKSoyLTEsIFRyZWUpOwogICAgICAgIHdyaXRlbG4oVHJlZVtpXSk7CiAgICAgICAgUHJpbnRMZXgoKGkrMSkqKDIrMSktMSwgVHJlZSk7CgkgIGVuZDsKZW5kOwoKcHJvY2VkdXJlIFByaW50VXAodHJlZUxlbmd0aDogaW50ZWdlcjsgVHJlZTogQSk7IC8vINCS0L3Rg9GC0YDQtdC90L3QuNC5IAp2YXIgaSA6IGludGVnZXI7CmJlZ2luCglpZiAoaSA8IHRyZWVMZW5ndGgpIHRoZW4KCSAgYmVnaW4KCSAgCVByaW50VXAoKGkrMSkqMi0xLCBUcmVlKTsKICAgICAgUHJpbnRVcCgoaSsxKSooMisxKS0xLCBUcmVlKTsKCSAgCXdyaXRlbG4oVHJlZVtpXSk7CgkgIGVuZDsKZW5kOwoKCnByb2NlZHVyZSBGaW5kKE46IGludGVnZXI7IFRyZWU6IEEpOyAvLyDQn9C+0LjRgdC6CnZhciB6LCBsLCByIDogaW50ZWdlcjsKYmVnaW4gCglmb3IgeiA6PSAwIHRvIHRyZWVMZW5ndGggZG8KCWlmIFRyZWVbel0gPSBOIHRoZW4gYmVnaW4KCSAgbCA6PSAyICogeiArIDE7CgkgIHIgOj0gMiAqIHogKyAyOwoJCWlmIChUcmVlW2xdIDw+ICAwKSBvciAoVHJlZVtyXSA8PiAwKSB0aGVuIGJlZ2luIC8vINCV0YHQu9C4INGDINGD0LTQsNC70Y/QtdC80L7Qs9C+INGN0LvQtdC80LXQvdGC0LAg0LXRgdGC0Ywg0YHRi9C9LCDRgtC+INC90LAg0LzQtdGB0YLQviDRg9C00LDQu9GP0LXQvNC+0LPQviDRjdC70LXQvNC10L3RgtCwINGB0YLQsNCy0LjQvCDQtdCz0L4g0LvQtdCy0L7Qs9C+INGB0YvQvdCwLAoJCQlUcmVlW3pdIDo9IGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0L3QsCDQvNC10YHRgtC+INGB0YvQvdCwINGB0YLQsNCy0LjQvCAtMSDQtNC70Y8g0YHQvtGF0YDQsNC90LXQvdC40Y8g0YHRgtGA0YPQutGC0YPRgNGLCgkJCVRyZWVbbF0gOj0gY2hpc2xvOwoJCWVuZAoJCWVsc2UgCgkJICBUcmVlW3pdIDo9IGNoaXNsbzsJLy8g0JXRgdC70Lgg0L3QtdGCINGB0YvQvdC+0LLQtdC5CiAgZW5kOwplbmQ7CgoKYmVnaW4KICByZWFkKHRyZWVMZW5ndGgpOwogIGZvciBpOj0wIHRvIHRyZWVMZW5ndGggZG8KICBSZWFkKFRyZWVbaV0pOwogIHJlYWRsbihOKTsKICAgIEZpbmQoTiwgVHJlZSk7CiAgICB3cml0ZWxuKCctLS0tJyk7CiAgICBQcmludERvd24oMCwgVHJlZSk7CmVuZC4=