30/09/2018, 21:43
Hỏi về hàm hủy trong lớp cây nhi phận tìm kiếm C++
Có bác nào biết viết hàm hủy lớp này như nào không ạ. Chỉ mình với!
//De: Cay nhi phan tim kiem
#include<iostream>
using namespace std;
//Khai bao lop
class bts
{
private:
struct node
{
int infor;
node *LPTR,*RPTR;
}*F;
public:
bts();
~bts();
void btinsert(int x);
void btsearch(int x);
int btempty();
void display();
void lrn(node *q);
};
//===chuong trinh chinh===
int main()
{
bts b;
int tg,x;
char trl,q;
while(1)
{
do
{
cout<<"Nhap vao 1 gia tri: ";cin>>tg;
b.btinsert(tg);
cout<<"
Ban co muon nhap tiep khong(c/k): ";
cin>>trl;
}
while(trl=='c'||trl=='C');
cout<<"Danh sach cay la:
";
b.display();
cout<<"
Nhap gia tri can tim kiem: ";cin>>x;
b.btsearch(x);
cout<<"
Danh sach cay sau khi tim kiem:
";
b.display();
cout<<"
An mot phim bat ky de tiep tuc!
An 'q' de thoat
";cin>>q;
if(q=='q') break;
}
cout<<endl;
return 0;
}
//===dinh nghia ham===
bts::bts():F(NULL)
{
}
//----------------
bts::~bts()
{
}
//----------------
void bts::btinsert(int x)
{
//Tao mot nut moi
node *N=new node;
N->infor=x;
N->LPTR=N->RPTR=NULL;
//Chen node vao cay
if(F==NULL) F=N;
else
{
//Tim vi tri node them vao
node *P=F,*Q;
while(P)
{
Q=P;
if(P->infor==x)
{
cout<<x<<" da ton tai trong cay! Khong them duoc :) ";
return;
}
else if(P->infor>x) P=P->LPTR;
else P=P->RPTR;
}
//Chen node
if(Q->infor>x) Q->LPTR=N;
else Q->RPTR=N;
}
}
//----------------
void bts::btsearch(int x)
{
node *P=F;
while(P)
{
if(P->infor==x) break;
else if(P->infor>x) P=P->LPTR;
else P=P->RPTR;
}
if(P)
cout<<"X ton tai trong cay";
else
{
cout<<x<<" khong ton tai trong cay thuc hien chen vao cay";
btinsert(x);
}
}
//---------------
int bts::btempty()
{
if(F==NULL) return 1;
return 0;
}
//----------------
void bts::lrn(node *q)
{
if(q)
{
lrn(q->LPTR);
lrn(q->RPTR);
cout<<" "<<q->infor<<" ";
}
}
void bts::display()
{
lrn(F);
}
Bài liên quan