Guruh talabasi Omonbayev Jaloliddin Mavzu
Download 40.9 Kb.
|
10. Binar daraxtlar bilan ishlash.
911-21 guruh talabasi Omonbayev Jaloliddin Mavzu : Binar daraxtlar bilan ishlash. Daraxtning balandligini aniqlashni o’rganganimizdan keyin uning muvoza-natlanganligini tekshirish mumkin. Binar daraxtning muvozanatlanganligini tekshirish uchun uning har bir tugunini har ikkala qismdaraxti balandliklarini hisoblab, farqlarini tekshirib ko’rish kerak. Agar farq 0 yoki 1 ga teng bo’lsa, bu muvozanatlangan daraxt hisoblanadi. Quyida binar daraxtni muvozanatlanganlikka tekshirishning rekursiv funksiyasini qo’llovchi dastur keltirilgan. #include #include using namespace std; class node{ public: int info; node *left; node *right; }; int k=0,Flag=1; int height(node *tree){ int h1,h2; if (tree==NULL) return (-1); else { h1 = height(tree->left); h2 = height(tree->right); if (h1>h2) return (1 + h1); else return (1 + h2); } } void vizual(node *tree,int l) { int i; if(tree!=NULL) { vizual(tree->right,l+1); for (i=1; i<=l; i++) cout<<" "; cout< } } int AVLtree (node *tree){ int t; if (tree!=NULL){ t = height (tree->left) - height (tree->right); if ((t<-1) || (t>1)) { Flag = 0; return Flag; } AVLtree (tree->left); AVLtree (tree->right); } } int GetFlag(){return Flag;} int main() { int n,key,s; node *tree=NULL,*next=NULL; cout<<"n="; cin>>n; int arr[n]; for(int i=0; i node *last=new node; cin>>s; p->info=s; p->left=NULL; p->right=NULL; if(i==0){tree=p; next=tree; continue; } next=tree; while(1) { last=next; if(p->info else next=next->right; if(next==NULL)break; } if(p->info else last->right=p;} cout< vizual(tree,0); AVLtree(tree); if(GetFlag()) cout<<"ha, muvozanatlangan daraxt"; else cout<<"yo’q, muvozanatlanmagan daraxt";cout< } 2. Yuqorida keltirilgan bir nechta algoritmlarni qo’llab bitta misol ko’rib chiqamiz. berilgan binar daraxtning balandligini aniqlang va muvozanatlang. #include #include using namespace std; class node{ public: int info; node *left; node *right; }; int k=0; int intrave(node *tree){ if (tree!=NULL){int a=NULL, b=NULL; if (tree->left!=NULL){ a=tree->left->info; } if (tree->right!=NULL){ b=tree->right->info; } cout< intrave(tree->right); } return 0; } int height(node *tree){ int h1,h2; if (tree==NULL) return (-1); else { h1 = height(tree->left); h2 = height(tree->right); if (h1>h2) return (1 + h1); else return (1 + h2); } } int create_arr(node *tree,int *arr){ if(!tree) return 0; else{ create_arr(tree->left,arr); arr[k++]=tree->info; create_arr(tree->right,arr); } } node *new_tree(int *arr, int start, int end) { if(start>end) return NULL; else { int mid=(start+end)/2; node *tree=new node; tree->info=arr[mid]; tree->left=new_tree(arr,start,mid-1); tree->right=new_tree(arr,mid+1,end); return tree; } } void vizual(node *tree,int l) { int i; if(tree!=NULL) { vizual(tree->right,l+1); for (i=1; i<=l; i++) cout<<" "; cout< } } int main() { int n,key,s; node *tree=NULL,*next=NULL; cout<<"n="; cin>>n; int arr[n]; for(int i=0; i node *last=new node; cin>>s; p->info=s; p->left=NULL; p->right=NULL; if(i==0){tree=p; next=tree; continue; } next=tree; while(1) { last=next; if(p->info else next=next->right; if(next==NULL)break; } if(p->info else last->right=p;} cout< cout<<"\nya'ni\n"; vizual(tree,0); int h=height(tree); cout<<"balandligi="< for(int i=0;i vizual(tree,0); getch();} Download 40.9 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling