// AVLTree.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "BSTTree.h"
#include <iostream.h>
#define NULL 0
int main()
{
// CBSTNode<int>* p=new CBSTNode<int>(200);
// cout<<p->getData()<<" "<<p->getLchild()<<" "<<p->getRchild()<<endl;
CBSTTree<int>* ss=new CBSTTree<int>();
ss->print();
int i;
int x;
i=10;
while(i>0)
{
cin>>x;
ss->insertElem(x);
i--;
}
ss->print();
if(!ss->insertElem(25))cout<<"insert fail!"<<endl;
cout<<ss->deleteElem(30)<<endl;
ss->print();
cout<<ss->deleteElem(12)<<endl;
ss->print();
cout<<ss->deleteElem(11)<<endl;
ss->print();
cout<<ss->deleteElem(17)<<endl;
ss->print();
cout<<ss->deleteElem(21)<<endl;
ss->print();
cout<<ss->deleteElem(29)<<endl;
ss->print();
cout<<ss->deleteElem(8)<<endl;
ss->print();
cout<<ss->deleteElem(16)<<endl;
ss->print();
if(ss->isEmpty())cout<<"is empty"<<endl;
else
cout<<"is not empty"<<endl;
if(ss->findElem(2))cout<<"2 yes"<<endl;
if(ss->findElem(30))cout<<"30 yes"<<endl;
if(ss->findElem(29))cout<<"29 yes"<<endl;
cout<<ss->Precursor(30)->getData()<<endl;
cout<<ss->Precursor(8)->getData()<<endl;
cout<<ss->treeHight()<<endl;
cout<<ss->elemLevel(30)<<endl;
cout<<ss->elemLevel(25)<<endl;
if(ss->isLeaf(29))cout<<"29 is leaf"<<endl;
if(ss->isLeaf(13))cout<<"13 is leaf"<<endl;
if(ss->isLeaf(20))cout<<"20 is leaf"<<endl;
if(ss->isLeaf(12))cout<<"12 is leaf"<<endl;
return 0;
}