Home / Veri Yapıları / İkili Ağaçlar – Konu Anlatımı

İkili Ağaçlar – Konu Anlatımı

Ağaç Veri yapısı, soyut veri tipleri içerisinde oldukça büyük öneme sahiptir. Bu derse kadar anlattığımız yapılar lineer yapılarken Ağaçlar (Trees) hiyerarşik bir yapılanmaya sahiptirler.

Ağaç veri yapısını düşünürken gerçek ağacın tersini düşünmemiz gerekir. Zira normal ağaçta kök en aşağıdadır, biz veri yapısı olarak kullanırken kökü en tepede tutacağız.
.

      Ağaç
      ----
       j    <-- Kök
     /   \
    f      k  
  /   \      \
 a     h      z    <-- Yapraklar

Ağaç Veri Yapısı Terimleri

Kök (root) Nedir? : Ağaç veri yapısının en tepesinde bulunan ve tek elemandan oluşan düğümdür.

Parent Node Nedir?: Parent node, bir düğümün kendisinden hiyerarşik olarak üstte yer alan düğüme verilen addır. Göreceli bir durumdur. Bunu tıpkı babanız gibi düşünebilirsiniz. Babanız sizin parent’ınızdır, ama dedenize göre incelerseniz Child durumuna düşmüş olur.

Child Node Nedir?: Bir düğümün hiyerarşik olarak kendilerine bağlı olan düğümlerine Child node adı verilir.

Leaf (Yaprak) Nedir?: Eğer bir düğümün kendinden sonra gelen alt düğümleri bulunmuyorsa ve hiyerarşik olarak en altta yer alıyorsa bunlara leaf node adı verilir.

Ağaç Veri Yapısı’na neden İhtiyaç Duyulur?

Ağaç veri yapısının en güzel tarafı hiyerarşik yapı oluşumuna müsaade etmesidir. Mesela bilgisayarlarımızda yer alan dosya yapısı tam bir ağaç yapısıdır.

Ağaç Veri Yapısı kullanılmasının bir diğer sebebi de üzerinde arama yapmanın oldukça hızlı olabilmesidir. (Bağlı listelerden daha hızlı arama yapabilirsiniz, Ancak dizilerden daha hızlı olmaz)

Ağaç Veri yapısı üzerinde ekleme ve çıkarma işlemleri rahatlıkla yapılabilir.

Ağaç Veri Yapısı Avantajları

  • Hiyerarşik yapıyı düzenleyebilirsiniz
  • Arama işlemi yapabilirsiniz
  • Sıralı listeler düzenleyebilirsiniz.
  • Yönlendirme algoritmaları için ideal
  • Decision Making (karar ağaçları) 0luşturabilirsiniz.

İkili Ağaç Nedir?

İkili Ağaçlar, Ağaç veri yapısının özel bir türüdür. Her düğümün en fazla 2 çocuğu (alt düğümü) olabilir. Bu düğümlere sol çocuk (left child) ve sağ çocuk (right Child) adı verilir.

İkili Ağaç C Kodu


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

//Düğümümüzü tutacak olan struct
//Dikkat ederseniz *left ve *right düğümleri için pointer kullanılmış
struct node 
{
    int data;
    struct node *left;
    struct node *right;
};
 
//Düğüm oluşturan fonksiyon
struct node* newNode(int data)
{
  /
  struct node* node = (struct node*)malloc(sizeof(struct node));
 
  
  node->data = data;
 
  //Yeni bir düğümün left child'ı ya da right childı yoktur. Bu yüzden NULL
  node->left = NULL;
  node->right = NULL;
  return(node);
}
 
 
int main()
{
  /*Kökü oluşturuyoruz*/
  struct node *root = newNode(2);  
  /* following is the tree after above statement 
 
        2
      /   \
     NULL  NULL  
  */
   
 
  root->left        = newNode(5);
  root->right       = newNode(7);
  /* 5 ve 7 düğümleri sol ve sağ düğümler haline geldi
           1
         /   \
        5      7
     /    \    /  \
    NULL NULL NULL NULL
  */
 
 
  root->left->left  = newNode(4);
  /*kök düğümünün solunun soluna 4 gdüğümünü ekliyoruz.
           1
       /       \
      5          7
    /   \       /  \
   4    NULL  NULL  NULL
  /  \
NULL NULL
*/
 
  getchar();
  return 0;
}


One comment

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir