Помощь - Поиск - Пользователи - Календарь
Полная версия: изменение э-тов по ключу в дереве
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Artex
Всем привет, очень прошу помочь с деревом, я читал FAQ, но не смог разобраться sad.gif(( Задача такая: изменить
отрицательные элементы в дереве на их abs величины, похожей нигде пока не нашел... Из всего курса паскаля не врубился только в эту. Помогите пожалуйста дописать процедуру ввода элементов и использование этих процедур в программе, очень прошу...
Procedure Abs(T: TTree);
Begin
  If T <> nil Then
    With T^ Do Begin
      if data<0 Then Data := abs(data);
      AbsLeft(T); AbsRight(T)
    End
End;
procedure PrintTree(t:Ttree;h:integer);
var i:integer;
begin
 if t<>nil then
   with t^ do
   begin
     PrintTree(left,h+1);
     for i:=1 to h do write('    ');
     writeln(key);
     PrintTree(right,h+1);
   end;
end;


var 
  root: TTree;
...
  

begin
  ... { заполнение дерева }
 
  
    Abs(root);

  ... { выводим результат }
end.
volvo
Procedure Abs(T: TTree);
Begin
  If T <> nil Then
    With T^ Do Begin
      Data := system.abs(Data);
      Abs(Left); Abs(Right)
    End;
End;
Процедуры создания дерева есть в FAQ... Я не вижу смысла перепечатывать их оттуда сюда, ничего нового ты все равно не увидишь, и если не разобрался ТАМ, то как разберешься ЗДЕСЬ?
Гость
Type  TType = Integer;
 TTree = ^TNode;  TNode = Record
 Data: TType;
  Left, Right: TTree;
 End;
Procedure Add(Var T: TTree; i: TType);

  Procedure CreateNode(Var p: TTree; n: TType);
  Begin
    New(p);
    p^.Data := n;
    p^.Left := nil;
    p^.Right := nil
  End;

Begin
  If T <> nil Then
    With T^ Do Begin

        If Data < i Then Add(Right, i)
        Else
          If Data > i Then Add(Left, i)

    End
  Else
    CreateNode(T, i)
End;
Procedure Abs(T: TTree);
Begin
  If T <> nil Then
    With T^ Do Begin
      Data := system.abs(Data);
      Abs(Left); Abs(Right)
    End;
End;
Procedure PrintDown(T: TTree);
Begin
  If T = nil Then halt;
  With T^ Do Begin

    Write(Data, ' ');
    PrintDown(Left); PrintDown(Right)

  End
end;


Var
 

Begin



End.

мне нужна только описательная часть и использование процедур...
это последняя задача для допуска к экзамену, и именно тему деревья я пока не понял, остальные задачи делал сам и вовремя.
М
Про теги не забываем...
мисс_граффити

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.