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

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

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

заполнение идет с помощью константы -массива очередной индекс изменяется в переменной i c помощью цикла For в теле основной программы заморочка в следующем
Листинг программы
  1. uses crt;
  2. const n: array[1 .. 7]of integer=(20,12,10,15,40,25,55);//константа - массив
  3. type
  4. PNode = ^Node; {Указатель на узел}
  5. Node = record {Тип запись в котором будет храниться информация}
  6. data: integer;
  7. left, right: PNode; {Ссылки на левого и правого сыновей}
  8. end;
  9. Binary = object
  10. Procedure Init;
  11. Procedure AddToTree (var Tree:PNode; i: byte);
  12. end;{End Binary}
  13. var
  14. Tree,p1:PNode; {Tree адрес корня дерева, p1-вспомогательная переменная}
  15. i: byte;//индекс для n
  16. Procedure Binary.Init;
  17. begin Tree:= nil; end;
  18. {Процедура добавления элемента }
  19. procedure Binary.AddToTree (var Tree:PNode; i: byte); {Входные параметры - адрес корня дерева и добавл элемент }
  20. begin
  21. if Tree=nil then {Если дерево пустое то создаём его корень}
  22. begin
  23. New(Tree); {Выделяем память }
  24. Tree^.data:= n[i]; {Добавляем данные }
  25. Tree^.left:=nil; {Зануляем указатели на левого }
  26. Tree^.right:=nil; правого сыновей }
  27. exit;
  28. end;
  29. if x < Tree^.data then {Доб к левому или правому поддереву это завсит от вводимого элемента}
  30. AddToTree(Tree^.left,x) {если меньше корня то в левое поддерево }
  31. else
  32. AddToTree(Tree^.right,x); {если больше то в правое}
  33. end;
  34. var B: Binary;
  35. {********* ОСНОВНАЯ ПРОГА ********************}
  36. begin ClrScr;
  37. B.Init;
  38. For i:= 1 to 7 do
  39. B.AddToTree (Tree, i );
  40. writeln('The end');
  41. 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
Листинг программы
  1. p2h := {w2h(Seg(p^))+':'+} w2h(Ofs(p^));

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


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

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы