Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

Обход бинарного дерева   Найти похожие ветки 

 
ALoG   (2008-05-11 18:56) [0]

Здравствуйте. Как можно реализовать обход бинарного дерева в ширину?


 
Palladin ©   (2008-05-11 19:08) [1]

а что именно непонятно?


 
ALoG   (2008-05-11 19:37) [2]

Непонятно, как сделать переход от 1го уровня дерева ко 2му, 3му, Nму... То есть сначала понятно: корень дерева записываю в очередь, считываю из очереди элемент, заношу куда-либо, удаляю его из очереди... А вот как потом занести в очередь всех сыновей 2го уровня?

Примерно так должно быть:
Temp1:=nil; Temp2 :=nil; Temp1 := значение  корня tree;
While (Temp1 < > nil) or (Temp2 < > nil) do
Begin
If  (Temp1 < > nil)
Then  
                      :=начало очереди Temp1;
 удалить элемент из очереди Temp1;
 Всех сыновей -> Temp2;  // Это непонятно как
Else
 Temp1:=Temp2;
 Temp2:= nil;
            переход к след.уровню  //И это


 
Amoeba ©   (2008-05-11 22:26) [3]


> Непонятно, как сделать переход от 1го уровня дерева ко 2му,
>  3му, Nму...

Рекурсию нужно использовать, и будет тебе счастье.


 
palva ©   (2008-05-11 22:46) [4]


ALoG   (11.05.08 18:56)
> обход бинарного дерева в ширину

А что такое обход в ширину и чем он отличается от обхода в глубину? Или, может быть, в высоту? Просветите.


 
korneley ©   (2008-05-11 23:19) [5]

Может тебя спасет  TTreeNode.Level?


 
korneley ©   (2008-05-11 23:44) [6]


> А что такое обход в ширину и чем он отличается от обхода
> в глубину? Или, может быть, в высоту? Просветите.

Как я понял, автор хочет по уровням ноды запихивать. Но, по моему, это не в ширину получается, а действительно, в высоту :)


 
MBo ©   (2008-05-12 05:58) [7]

proc TraverseByLevels(Root)
Queue.Put(Root)
while not Queue.Empty do begin
 Node = Queue.Get
 if Node.Left<>Nil then Queue.Put(Node.Left)
 if Node.Right<>Nil then Queue.Put(Node.Right)
end



Страницы: 1 вся ветка

Текущий архив: 2008.06.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
2-1210058039
DevilDevil
2008-05-06 11:13
2008.06.01
Bitmap. Mask. не отображается.


15-1208502377
DelphiLexx
2008-04-18 11:06
2008.06.01
Как вести разработку прилож. в Delphi,если,в св-вах WinXPкрупный


15-1208518662
man
2008-04-18 15:37
2008.06.01
Motorola C350


2-1210593038
Johnnnn
2008-05-12 15:50
2008.06.01
TwebBrowser через сокс?


15-1208483714
Slider007
2008-04-18 05:55
2008.06.01
С днем рождения ! 18 апреля 2008 пятница