INTERNET
 :
  |    

/

, . /

++.

 →  
... 18 19 20 21 22 23 24 25 26 27 

public:

void Add(T &a);

int Delete(int k);

BTree();

~BTree(); };

template <class T> void BTree<T>::Add(T &a)

{ if(data==NULL) { data=a; return; } //

if(a>data)

{ if(r==NULL) r=new BTree<T>; r->Add(a); } else //

{ if(l==NULL) l=new BTree<T>; l->Add(a); } } //

template <class T> int BTree<T>::Delete(int k)

{ if(k==0) { data=0; return 0; }

if(k==1&&l!=NULL) return l->Delete(0);

if(k==2&&r!=NULL) return r->Delete(0);

if(l!=NULL) {k-=l->Delete(k); if(k==0) return 0; }

if(r!=NULL) {k-=r->Delete(k); if(k==0) return 0; }

return k; }

template <class T> BTree<T>::BTree()

{ l=NULL; r=NULL; data=0; }//

template <class T> BTree<T>::~BTree()

{ data=0; //

if(l!=NULL) delete l; // -//-

if(r!=NULL) delete r; } // -//-

void main()

{ BTree<long> a; // long-

a.Add(10); a.Add(3); a.Add(210); a.Add(70);//

a.Delete(1);}

//----------------------------------------------------------------------------

// 8.

// 2.

// 7. .

template <class T> class BTree

{ private:

BTree<T> *l,*r; //

T data;

public:

void Add(T &a);

T* Find(int &k);

BTree();

~BTree(); };

template <class T> void BTree<T>::Add(T &a)

{ if(data==NULL) { data=a; return; } //

if(a>data)

{ if(r==NULL) r=new BTree<T>; r->Add(a); } else //

{ if(l==NULL) l=new BTree<T>; l->Add(a); } } //

template <class T> T* BTree<T>::Find(int &k)

{ if(k==0) return &data;

T* tmp=NULL; k--;

if(l!=NULL) {tmp=l->Find(k); if(tmp!=NULL) return tmp; }

if(r!=NULL) {tmp=r->Find(k); if(tmp!=NULL) return tmp; }

return NULL; }

template <class T> BTree<T>::BTree()

{ l=NULL; r=NULL; data=0; }//

template <class T> BTree<T>::~BTree()

{ data=0; //

if(l!=NULL) delete l; // -//-

if(r!=NULL) delete r; } // -//-

void main()

{ BTree<long> a; // long-

a.Add(10); a.Add(3); a.Add(210); a.Add(70);//

long m=*a.Find(1);}

 

 →  
... 18 19 20 21 22 23 24 25 26 27 


Copyright © 2005—2007 «RefStore.Ru»