![]() |
| ikili arama ağacı adımları |
Her şeyden önce ağaçtaki düğümlerin bilgilerini tutan bir struct yapısı oluşturmamız gerekli
İkili Arama Ağacı Oluşturma C Kodu
struct node { int data; struct node *leftChild; struct node *rightChild; };
İkili Arama Ağacı Arama Yapma C Kodu
struct node* search(int data){ struct node *current = root; printf("Gezilen dugumler: "); while(current->data != data){ if(current != NULL) { printf("%d ",current->data); //sol alt agaci tara if(current->data > data){ current = current->leftChild; }//sag alt agaci tara else { current = current->rightChild; } //bulunamadıgı durumda if(current == NULL){ return NULL; } } } return current; }
while döngümüzü oluşturuyoruz, curtten->data != data olduğu müddetçe döngümüz dönecek.
Eğer gezilen düğüm boş değilse (NULL değilse daha doğrusu) ekrana yazdırıyoruz. Peki aramayı nasıl yapıyoruz?
Burada BST yapısının temel kuralını uyguluyoruz. Eğer current->data > data (current->data değeri data değerinden büyükse) current = current -> leftChild yapıyoruz. Yani sol alt ağacı tarıyoruz. Değilse sağ alt ağacı tarıyoruz. Bu işlem while döngümüz boyunca sürüyor, çünkü while döngümüz doğru datayı bulunca sona eriyor.
İkili Arama Ağaçlarında arama yapma işleminin temel şartı, mevcut değerimizin aradığımız değerden büyük olup olmamasıdır. Eğer büyükse sol çocuk, değilse sağ çocuk taranır.

Hiç yorum yok:
Yorum Gönder