Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 20:02   #1
dido171
 
Регистрация: 12.11.2007
Сообщений: 5
По умолчанию Высота бинарного дерева

Доброе время суток)
Нужна ваша помощь, на носу зачет, а задача не получается Т_Т
Задачка: создать бинарное дерево. Написать рекурсивную процедуру определения высоты дерева.
Дерево создала, а вот с процедурой есть некие проблемы:
Код:
procedure hait (var head:ref; var d,i:integer);
var d:integer;
     p:ref;
begin
 p:=head;
 i:=i+1;
  while d<>1 do 
    begin
      if (p^.lnext<>nil) then
        hait (p^.lnext,d,i);
      if (p^.rnext<>nil) then
        hait (p^.rnext,d,i);    
       if (p^.lnext=nil) and (p^.rnext=nil)  then
         d:=1;
    end;
 writeln (i);
end;
препод сказал что процедура реализована не до конца, что когда мы просматриваем ветви дерева справа и слева, то там и там будут свои max-значения, которые надо сравнить между собой, и если они равны 0, то прога возвращается в вершину, и присваивает длине значение 1.
Пожалуйста помогите ее доделать.
dido171 вне форума Ответить с цитированием
Старый 26.05.2009, 23:03   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Код:
function height(p: ref): integer;
var l, r: integer;
begin
if p <> nil then
  begin
  l := height(p^.left);
  r := height(p^.right);
  if l > r then height := l + 1
  else height := r + 1
  end
else
  height := 0;
end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 26.03.2010, 12:20   #3
Leon.
Новичок
Джуниор
 
Регистрация: 26.03.2010
Сообщений: 1
По умолчанию

dido171 вы не могли бы скинуть полностью текст программы? Пожалуйста!
Leon. вне форума Ответить с цитированием
Старый 24.05.2011, 22:48   #4
Crocks
Новичок
Джуниор
 
Регистрация: 24.05.2011
Сообщений: 1
По умолчанию

Такой вопрос - а возможно ли реализовать данную программу при помощи процедуры? заранее спасибо.
Crocks вне форума Ответить с цитированием
Старый 02.12.2014, 13:30   #5
ujif
Пользователь
 
Регистрация: 24.02.2013
Сообщений: 28
По умолчанию высота дерева

Цитата:
Сообщение от Greblin Посмотреть сообщение
Код:
function height(p: ref): integer;
var l, r: integer;
begin
if p <> nil then
  begin
  l := height(p^.left);
  r := height(p^.right);
  if l > r then height := l + 1
  else height := r + 1
  end
else
  height := 0;
end;
все работает, однако не могу понять как...
какие значения идут в l и r
понятно ,вроде что обходит все дерево
может проясните ,будьте так любезны
ujif вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обход бинарного дерева в ширину. Delphi 7. ZhooZhik Помощь студентам 4 01.12.2011 02:48
Составление бинарного дерева [MI_nor] Общие вопросы C/C++ 1 08.05.2009 00:28
создание бинарного дерева zetrix Паскаль, Turbo Pascal, PascalABC.NET 2 30.11.2006 19:32