#include using namespace std; template class BST; template class node { friend class BST; public: node *left; T data; node * right; }; template class BST { node *root; public: int count; node* getroot(){ return root;} BST() { count=0; root=NULL; } int insert(T val) { node*cur,*prev; cur=root; prev=NULL; while(cur) { prev=cur; if(cur->data==val) return 0; else if(valdata) cur=cur->left; else if (val>cur->data) cur=cur->right; } cur=new node; cur->left=cur->right=NULL; cur->data=val; if(root==NULL) root=cur; else if(valdata) prev->left=cur; else prev->right=cur; return 1; } void inorder (node *cur) { if(cur!=NULL) { inorder(cur->left); cout<data<<"\t"; inorder(cur->right); } } void countnode (node *cur) { if(cur!=NULL) { countnode(cur->left); count=count+1; countnode(cur->right); } } void preorder (node *cur) { if(cur!=NULL) { cout<data<<"\t"; preorder(cur->left); preorder(cur->right); } } void postorder (node *cur); int del(T val) { node*cur,*nx,*suc; cur=root; nx=NULL; suc=NULL; while(cur) { if(valdata) cur=cur->left; else if(val>cur->data) cur=cur->right; else break; } if(!cur) return 0; nx=cur->left; while(nx->right) { suc=nx; T d=nx->data; nx=nx->right; } cur->data=nx->data; suc->right=nx->left; delete nx; return 1; } int search(node *cur,T value) { if(cur==NULL) return 0; if(cur->data ==value) return 1; else if (valuedata) { int k= search(cur->left,value); return k; } else {int k=search(cur->right,value); return k; } } int depth(node *cur) { if(cur==NULL) return 0; int ld=depth(cur->left); int rd=depth(cur->right); if(ld>rd) return ld+1; else return rd+1; } }; template void BST:: postorder (node *cur) { if(cur!=NULL) { postorder(cur->left); postorder(cur->right); cout<data<<"\t"; } } int main(){ BST t; t.insert(10); t.insert(30); t.insert(4); t.insert(1); t.insert(35); t.insert(40); cout<<"inorder " ; t.inorder(t.getroot()); //cout<