Dsal 5
Dsal 5
struct node
int data;
node *left,*right;
};
class BST
public:
node *root;
BST()
root=NULL;
node *create_BST();
};
node * BST::create_BST()
int n,i,x;
cout<<"Enter total number of nodes : ";
cin>>n;
for(i=0;i<n;i++)
cin>>x;
root=insert(root,x);
return root;
if(T==NULL)
T=new node;
T->data=x;
T->left=NULL;
T->right=NULL;
return T;
else
if(x>T->data)
T->right=insert(T->right,x);
return T;
if(x<T->data)
{
T->left=insert(T->left,x);
return T;
void BST::display(node * T)
if(T!=NULL)
display(T->left);
cout<<T->data<<" ";
display(T->right);
node * BST::findmin(node * T)
while(T->left!=NULL)
T=T->left;
return T;
node * BST::findmax(node * T)
while(T->right!=NULL)
{
T=T->right;
return T;
if(T==NULL)
return NULL;
if(T->data==x)
cout<<"found : "<<T->data;
return T;
if(x>T->data)
T=find(T->right,x);
return T;
else if(x<T->data)
T=find(T->left,x);
return T;
{
if(T==NULL)
return 0;
else
int main()
BST b1;
int ch,x1;
char ans;
int key;
node *temp,*temp1;
do{
cin>>ch;
switch(ch)
case 1:
b1.root=b1.create_BST();
break;
case 2:
cin>>x1;
b1.root=b1.insert(b1.root,x1);
break;
case 3:
b1.display(b1.root);
break;
case 4:
temp=b1.findmin(b1.root);
break;
case 5:
temp=b1.findmax(b1.root);
break;
case 6:
cin>>key;
temp1=b1.find(b1.root,key);
if(temp1!=NULL)
cout<<",Present : "<<temp1->data;
else
break;
case 7:
x1=b1.height(b1.root);
break;
}
cout<<"\n GO TO MAIN MENU ??(y or n) : ";
cin>>ans;
}while(ans=='y');
return 0;
OUTPUT: