sahar_karimi
کاربر تازه وارد
- تاریخ عضویت
- 9 جولای 2006
- نوشتهها
- 10
- لایکها
- 0
سلام میشه اگر کسی میتونه الگوریتم درخت متعادل رو به من بده من وقت ندارم
ممنون
ممنون
به نقل از sahar_karimi :سلام میشه اگر کسی میتونه الگوریتم درخت متعادل رو به من بده من وقت ندارم
ممنون![]()
به نقل از sahar_karimi :در درخت متعادل هر گره درخت n فیلد دارد که مثلا اگر 20 در این گره باشرد اشاره گر چپ به گرهی که مقدارهای کمتر از 20 دارد اشاره میکند و اشاره گر راست به گرهی که مقدارهای بزرگتراز 20 دارد اشاره میکند
اگر برنامشو دارید به من بدید
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct treenode
{ struct treenode *left;
int info;
struct treenode *right;
};
struct treenode *root=NULL;
/////////////////////////////
void insert(int x)
{
treenode *p,*q,*r;
p=root;
if(p==NULL)
{
root=new treenode;
root->info=x;
root->left=root->right=NULL;
return;
}//end if
q=root;
while(p!=NULL)
{
if(p->info==x)
{
printf("\n Can Not Insert");
return;
}//if
if(p->info<x)
{
q=p;
p=p->right;
}
else
{
q=p;
p=p->left;
}
}//for
r=new treenode;
r->info=x;
r->left=r->right=NULL;
if (q->info<x)
q->right=r;
else
q->left=r;
}//insert
/////////////////////////
void binsearch(int x)
{
treenode *p;
p=root;
while(p!=NULL)
{
if (p->info==x)
{
printf("\n i find x from this tree ");
return;
}
if (p->info< x)
p=p->right;
else
p=p->left;
} //end while
printf("\n not found");
}
////////////////////
void inorder(treenode *r)
{
if (r!=NULL )
{
inorder(r->left);
printf("%6d",r->info);
inorder(r->right);
}
}
main()
{
int x,n;
for(;;)
{
clrscr();
printf("\n1: Insert");
printf("\n2: Search");
printf("\n3: Print");
printf("\n4: Exit");
printf("\n Choose (1..4)");
scanf("%d",&x) ;
switch (x)
{
case 1 :{ printf("Enter Item");
scanf("%d",&n) ;
insert(n) ; } break;
case 2 :{ printf("Enter Item");
scanf("%d",&n) ;
binsearch(n) ;} break;
case 3 : inorder(root);
break;
case 4 : exit;
}
getch();
}
}
نه bst نیست که هر گره چند مقدار در خود دارد