Veriyapılarının en önemli konularından biriside Ağaç (Tree) veriyapısıdır.Aşağıda ki Ağaç yapısını inceleyelim.

Bir ağaçtaki sıralama şekilleri:

İnorder: Left tree’nin en sol ucundan başlayarak sağa tarama yapılır.

Preorder:Önce ana node sonra yan node’lar okunur.

Postorder: Sondan başa doğru sol öncelikli olarak tarama yapılır.

Şimdi bunların iplementation kodunu görelim Console ekrandan Sonra…

 

#include<iostream>
#include<time.h>
using namespace std;

//——————————————————————————
class Node{
      public:
     
         Node(){
         this->left=0;    
         this->rigt=0;
         this->key=0;
        
         }     
     
     
      Node *left;
      Node *rigt;
      int key;
      };
//——————————————————————————     
class Agac{
     
      public:
         Agac();
         void ekle(int,Node*&);
         void Pre_order(Node *);
         void In_order(Node *);
         void Post_order(Node *);
  
         void Buyukten_kucuge(Node *); 
  
   // private: 
      Node *root;
      int count;
     
      };     
//——————————————————————————
 Agac::Agac()
 {
       root=0;     
       count=0;            
            
}  
//——————————————————————————
void Agac::ekle(int _key,Node *&root)
{
  Node *pNew=new Node;  
  pNew->key=_key;
  pNew->left=0;
  pNew->rigt=0;
    
     if(root==0)
       root=pNew;
  
   else{
       
        if(_key>root->key)
           ekle(_key,root->rigt);
        else
           ekle(_key,root->left);
  
        }
    count++;
   }
//——————————————————————————
void Agac::Buyukten_kucuge(Node *root)
{

    
    if(root!=NULL){
       Buyukten_kucuge(root->rigt);
     
     cout<<root->key<<” “;
     Buyukten_kucuge(root->left);
     }
  }
//——————————————————————————
void Agac::Pre_order(Node *root)
{
   
    
    if(root!=NULL){
      cout<<root->key<<” “;
       Pre_order(root->left);
       Pre_order(root->rigt);
    }
}
//——————————————————————————
void Agac::In_order(Node *root)
{
     if(root!=NULL){
      In_order(root->left);              
      cout<<root->key<<” “;
      In_order(root->rigt);
     }
}
//——————————————————————————
void Agac::Post_order(Node *root)
{
   Node *tmp=root;   
    
    if(root!=NULL){
       Post_order(root->left);
       Post_order(root->rigt);
       cout<<root->key<<” “;
      
       }
}
//——————————————————————————
main()
{
  srand(time(NULL));   
  Agac A;   
     
    for(int i=0;i<10;i++)  
    A.ekle(1+rand()%60,A.root); 
     
   A.Buyukten_kucuge(A.root); cout<<endl;

   A.In_order(A.root);
     
system(“pause”);
}
MEHMET SALİH DEVECİ

BİLGİSAYAR MÜHENDİSİ YAZILIM UZMANI

Reklamlar
yorum
  1. orhan dedi ki:

    Bu ödevde kullanıcının girdiği seviye (n) değerine bağlı olarak 1 .. pow(2,n+1)-1 arası sayılar ikili ağaca dengeli yerleştirildiğinde oluşan ağaç aşağıdaki videodaki gibi text dosyaya yazılacaktır. Videoda n değerleri 1..5 arası girilmiştir. Göndereceğiniz program herhangi başka bir n değeri için de çalışmalıdır. kod söyle başlıyo
    #include

    using namespace std;

    #include
    void drawTree(int n) {…..} \\abi burada program çalıştığında n için verilen her değerdetext
    int main () \\dosyasına ağaç yapıına göre dizecek …
    {
    int n;
    cout<>n;

    drawTree(n);

    ::getchar();
    …………
    bu bana lazım abi yaparsaan sevinirim …. şimdiden teşekkürler

  2. orhan dedi ki:

    tmm abi gerek yok buldum…teşekkür…

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s