Tree üçün BFS və DFS
BFS (Breadth-First Search) və DFS (Depth-First Search) bir tree-ni gəzmək üçün və ya bir tree-də axtarış etmək üçün istifadə olunan bir texnikadı. BFS və DFS-i həmçinin graphlarada tətbiq etmək mümkündür. Bu yazımızda biz tree-ni necə gəzə bilərik ona nəzər yetirəcik.
İlk olaraq DFS-dən başlayaq. DFS-in, 3 növ ağacı gəzmək metodu vardır. Bunları sıralasaq,

In-Order
Pre-Order
Post-Order
In-Order metodunda, biz, ilk olaraq sol noda, sonra sağ noda və sonra isə root noda gedirik.
Pre-Order metodunda, biz, başlıyırıq root noddan, sonra gedirik sol noda və sonra gedirik sağ noda.
Son olaraq, Post-Order metodunda isə, sol noddan başlıyırıq, sonra gedirik sağ noda və sonra isə root noda gedirik.
İndi isə keçək BFS-ə. BFS, Level-Order metodu istifadə olunur. Yəni, root nodu ziyarət etdikdən sonra keçirik onun alt nodlarına (child nodes). Və burada biz Queue data strukturundan istifadə edirik. Alqoritmi addım-addım izah etsək belə bir şey çıxar ortaya:
Boş bir queue yaradırıq
İlk olaraq root nodu queue-ə əlavə edirik.
Queue boş olana qədər döngünü işlədirik
Nodu print edirik
Nodumuzun alt sol nodu varsa queue-ə əlavə edirik.
Nodumuzun alt sağ nodu varsa queue-ə əlavə edirik.
Queue-dən birinci daxil olan nodu götürüb və silirik.
Aşağıda kodu tam formasına baxa bilərsiniz. Node classımız özündə bir dəyər və alt sol-sağ nodları saxlıyır.
DFS,
BFS,
Son olaraq, DFS və BFS-in time complexity-si O(V)-dir. Burada V, nodların sayıdır.
Last updated