#include
using namespace std;
struct Node {
int data;
struct Node* left;
struct Node* right;
// val is the key or the value that
// has to be added to the data part
Node(int val)
{
data = val;
// Left and right child for node
// will be initialized to null
left = NULL;
right = NULL;
}
};
int main()
{
/*create root*/
struct Node* root = new Node(1);
/* following is the tree after above statement
1
/ \
NULL NULL
*/
root->left = new Node(2);
root->right = new Node(3);
/* 2 and 3 become left and right children of 1
1
/ \
2 3
/ \ / \
NULL NULL NULL NULL
*/
root->left->left = new Node(4);
/* 4 becomes left child of 2
1
/ \
2 3
/ \ / \
4 NULL NULL NULL
/ \
NULL NULL
*/
return 0;
}
Qisqacha mazmun: Daraxt - bu ma'lumotlarning ierarxik tuzilishi. Daraxtlarning asosiy ishlatilishlariga ierarxik ma'lumotlarni saqlash, o'rtacha kirish va kiritish / o'chirish operatsiyalarini ta'minlash kiradi. Ikkilik daraxtlar - bu har bir tugunda ko'pi bilan ikkita boladan iborat bo'lgan alohida holatlar.
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.
Qo’yilgan masala. Talabalar topshiriq variantiga mos ravishda binar darxtlar ustida berilgan amallar bilan ishlash ko’nikmasiga ega bo’lishlari kerak.
Ish tartibi:
Tajriba ishi nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.
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.
#include
usingnamespace std;
chartree[10];
introotnode(char key){
if(tree[0]!='\0')
cout<<"Tree already had root";
else
tree[0]= key;
return0;
}
intleftchild(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;
return0;
}
intrightchild(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;
return0;
}inttraversetree(){
cout <<"\n";
for(int i =0; i <10; i++){
if(tree[i]!='\0')
cout<
else
cout<<"-";
}
return0;
}
Do'stlaringiz bilan baham: |