Site icon IT Tutorial

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

 1,411 views last month,  3 views today

Exit mobile version