خواهشن کمک کنيد (ساختمان داده در ++c
[PHP]3) سوال بعدی اینه که من نسخه غیر بازگشتیه تابع preorder() یک درخت را نوشتم درخواستم از شما اینه که چطور میشه نسخه غیر بازگشتیه تابع postorder() را بنویسم.
اینم کد نسخه غیر بازگشتیه preorder()
void tree::preorder(tree node *s)
{
tree node=*p=root;
do{
while(p != null)
{
cout<<p -> data;
s.push(p);
p=p->left;
if(!(s-empty())
{
p=s.pop();
p=p->right;
}
}while(!(s.empty()) || p != null)
}
}
4) الگوریتمی به نام swaptree() که یک درخت دودویی دریافت و جای بچه های چپ و راست هر گره را عوض کند
5) این سوال هم فکر نکنم زیاد سخت باشه
الگوریتمی برای اضافه کردن یک عضو در min heap البته من الگوریتم در max heap شو میزارم شاید بدرد خورد
void insert-max-heap(element item,int *n)
{
int i;
if(heap-full(*n)
{
cout<<"tree is full\n";
exit(1);
}
i=++(*n);
while((i!=1)&&(item.key>heap[i/2].key))
{
heap[i]=heap[i/2];
i/=2;
}
heap[i]=item;
}
6) این سوال هم فکر کنم بتونید کمکم کنید
الگوریتمی برای حذف کوچکترین عضو در min heap البته من الگوریتم در max heap شو میزارم شاید کمک کنه
void element delete-max-heap(int*n)
{
int parent,child;
element temp,item;
if(heap-empty(*n))
{
cout<<"tree is empty\n";
exit(1);
}
item=heap[1];
temp=heap[(*n)--];
parent=1;
child=2;
while(child<=*n)
{
if((child<=*n)&&(heap[child].key<heap[child+1].key))
child++;
if(temp.key>=heap[child].key)
break;
heap[parent]=heap[child];
child*=2;
}
heap[parent]=temp;
return item;
}
[/PHP]