AĞAÇ (TREE) VERİYAPISI

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

 161 views last month,  1 views today

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress mehmetsalih.deveci@outlook.com.-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  mehmetsalih.deveci@outlook.com a mail atabilirsiniz.

3 comments

  1. 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. tmm abi gerek yok buldum…teşekkür…

  3. Etiketlerdeki C# tagını kaldırır mısınız arama motorunu yanıltırıyorsunuz

Leave a Reply