Laboratoriya ishi -22 Mavzu: Binar daraxtlar. Daraxt balandligi va ko’ruv. Ishdan maqsad


Download 219.69 Kb.
Pdf ko'rish
Sana08.01.2022
Hajmi219.69 Kb.
#249617
Bog'liq
22 labaratoriya 611 19 gh Qosimova Yulduzxon



LABORATORIYA ISHI -22  

Mavzu: Binar daraxtlar. Daraxt balandligi va ko’ruv.  

Ishdan maqsad. Ushbu laboratoriya ishida talabalar Binar daraxtlar tushunchasi 

bilan tanishib chiqishi hamda daraxt balandligi va ko’ruvni ishlashni o’rganishlari 

kerak. 

Daraxtlarni aks ettirish uchun ikkita usul mavjud: massivni ishlatadigan ketma-ket 

tasvirlangan bog'langan ro'yxatni ishlatadigan dinamik tugunni namoyish etish. Bu 

erda biz ikkitomonlama daraxtlarni massivli tasvirlash haqida gaplashamiz. Buning 

uchun biz BT tugunlarini raqamlashimiz kerak. Ushbu raqamlash 0 dan (n-1) yoki 

1 dan n gacha boshlanishi mumkin. Massivdagi tugunlar va ularning ota-ona va 

bola tugunlarining pozitsiyalarini chiqaramiz. Biz 0 indeksiga asoslangan ketma-

ketlikni qo'llaganimizda, Faraz qilaylik, ota tugun - bu p indeks. Keyin, left_child 

tuguni (2 * p) + 1 indeksida. Right_child tuguni (2 * p) + 2 indeksida. Ildiz tuguni 

0 indeksida. left_child 1-indeksda. Right_child 2-indeksda. Biz 1 indeksga 

asoslangan ketma-ketlikni ishlatganimizda, deylik, ota tugun p indeksda, 

Right_node indeksda (2 * p). Left_node (2 * p) +1 indeksida. Ildiz tuguni indeks 

1da. left_child indeks 2da. Right_child 3-indeksda. 

Topshiriqlar 

 

Dastur kodi: 



#include 

using namespace std; 

char tree[10]; 

int rootnode(char key){ 

   if(tree[0] != '\0') 



      cout<<"Tree already had root"; 

   else 


      tree[0] = key; 

   return 0; 

int leftchild(char key, int parent){ 



   if(tree[parent] == '\0') 

      cout <<"\nCan't set child at"<<(parent * 2) + 1<<" , no parent found"; 

   else 

      tree[(parent * 2) + 1] = key; 

   return 0; 

int rightchild(char key, int parent){ 



   if(tree[parent] == '\0') 

      cout<<"\nCan't set child at"<<(parent * 2) + 2<<" , no parent found"; 

   else 

      tree[(parent * 2) + 2] = key; 

   return 0; 

int traversetree(){ 



   cout << "\n"; 

   for(int i = 0; i < 10; i++){ 

      if(tree[i] != '\0') 

         cout<

      else 

         cout<<"-"; 

   } 

   return 0; 






int main(){ 

   rootnode('A'); 

   rightchild('C', 2); 

   leftchild('D', 0); 

   rightchild('E', 1); 

   rightchild('F', 2); 

   traversetree(); 

   return 0; 





 

Download 219.69 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling