Заполнение бинарного дерева со значениями из константы-массива - Free Pascal

Узнай цену своей работы

Формулировка задачи:

заполнение идет с помощью константы -массива очередной индекс изменяется в переменной i c помощью цикла For в теле основной программы заморочка в следующем
uses crt;
    const n: array[1 .. 7]of integer=(20,12,10,15,40,25,55);//константа - массив
 type
    PNode = ^Node;  {Указатель на узел}
    Node =  record  {Тип запись в котором будет храниться информация}
       data: integer;
     left, right: PNode; {Ссылки на левого и правого сыновей}
   end;
     
             Binary = object
Procedure Init;
Procedure AddToTree (var Tree:PNode; i: byte);
             end;{End Binary}
var
  Tree,p1:PNode; {Tree адрес корня дерева, p1-вспомогательная переменная}
   i: byte;//индекс для n
 
Procedure  Binary.Init;
 begin Tree:= nil; end;
 
{Процедура добавления элемента }
procedure  Binary.AddToTree (var Tree:PNode; i: byte); {Входные параметры - адрес корня дерева и добавл элемент }
begin
 if Tree=nil then  {Если дерево пустое то создаём его корень}
   begin
     New(Tree);   {Выделяем память }
     Tree^.data:= n[i];     {Добавляем данные }
     Tree^.left:=nil;     {Зануляем указатели на левого }
     Tree^.right:=nil;  {и правого сыновей }
      exit;
   end;
 if x < Tree^.data then   {Доб к левому или правому поддереву это завсит от вводимого элемента}
     AddToTree(Tree^.left,x)  {если меньше корня то в левое поддерево }
  else
    AddToTree(Tree^.right,x);  {если больше то в правое}
end;
   var B:  Binary;
{********* ОСНОВНАЯ ПРОГА ********************}
 begin ClrScr;
 B.Init;
 For i:= 1 to 7 do
  B.AddToTree (Tree, i );
 writeln('The end');
 Readkey;
Умища своего не преложу как здесь заполняется это наше двурукое(ногое ) дерево предполагаю что так в вершину идет 20 в левую ветку от 20 число 12 в левую ветку от 12 число 10 в правую ветку от 10 число 15 в правую ветку от 15 число 40 в левую ветку от 40 число 25 в правую ветку от 25 число 55 а как тогда заполнить чтобы получилось такое красивое дерево ........20 ...12________40 10__15....25____55 основной корень здесь 20 в левую ветку от 20 идет число 12 в правую ветку от 20 идет 40 от 12 влево число 10 вправо число 15 от 40 влево число 25 вправо число 55 или я чего недогоняю
понял , при добавлении нового элемента просмотр чисел в узлах начинается с самого первого значения - числа 20 ..посмотрел данные в окне Watches и в call stack видно что возврат идет к самой вершине..

Решение задачи: «Заполнение бинарного дерева со значениями из константы-массива»

textual
Листинг программы
p2h := {w2h(Seg(p^))+':'+} w2h(Ofs(p^));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы