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:

  1. Boş bir queue yaradırıq

  2. İlk olaraq root nodu queue-ə əlavə edirik.

  3. Queue boş olana qədər döngünü işlədirik

    1. Nodu print edirik

    2. Nodumuzun alt sol nodu varsa queue-ə əlavə edirik.

    3. Nodumuzun alt sağ nodu varsa queue-ə əlavə edirik.

    4. 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 BFS-in time complexity-si O(V)-dir. Burada V, nodların sayıdır.

Last updated