0% found this document useful (0 votes)
11 views5 pages

A 6

Code of assignments in IT
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views5 pages

A 6

Code of assignments in IT
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

CODE

#include <iostream>
#include <algorithm>
using namespace std;
struct node{
int data;
node* left;
node* right;
node(int item){
data=item;
left=NULL;
right=NULL;
}
};
class tree{
node* root;
public:
tree(){
cout<<"Enter root element\n";
int t;
cin>>t;
root=new node(t);
}
node* insert(node* Node,int data){
if (Node==NULL){
return new node(data);
}
else if(Node->data==data){
return Node;
}
else if(Node->data<data){
Node->right=insert(Node->right,data);
}
else{
Node->left=insert(Node->left,data);
}
return Node;
}

node* getRoot(){
return root;
}
void inorder(node* root) {
if (root != NULL) {
inorder(root->left);
cout << root->data << " ";
inorder(root->right);
}
}
void postorder(node* root){
if(root!=NULL){
postorder(root->left);
postorder(root->right);
cout<<root->data<<" ";
}
}
void preorder(node* root){
if(root!=NULL){
cout<<root->data<<" ";
preorder(root->left);
preorder(root->right);
}
}

node* getSuccessor(node* curr){


curr = curr->right;
while (curr != NULL && curr->left != NULL)
curr = curr->left;
return curr;
}

node* del(node* root,int x){


if (root==NULL){
cout<<"Element not present\n";
return root;
}
else if (root->data > x){
root->left = del(root->left, x);
}
else if (root->data < x){
root->right = del(root->right, x);
}
else{
if (root->left == NULL) {
node* temp = root->right;
delete root;
return temp;
}
if (root->right == NULL) {
node* temp = root->left;
delete root;
return temp;
}
node* succ = getSuccessor(root);
root->data = succ->data;
root->right = del(root->right, succ->data);
}
return root;
}
void search(node* root,int x){
if(root==NULL){
cout<<"Element not present\n";return;
}
else if(root->data==x){
cout<<"Element present\n";return;
}
else if(root->data>x){
search(root->left,x);
}
else{
search(root->right,x);
}
}

node* mirror(node* root){


if (root!=NULL){
swap(root->left,root->right);
mirror(root->left);
mirror(root->right);
}
return root;
}

void leaf(node* root){


if (!root){return;}
if (root->left){leaf(root->left);}
if (root->right){leaf(root->right);}
if(!root->left && !root->right){
cout<<root->data<<" ";return;
}
}

int depth(node* root){


if(root==NULL){return 0;}
int ldepth=depth(root->left);
int rdepth=depth(root->right);
return max(ldepth,rdepth)+1;
}
};
int main(){
tree t1;int cont=1;int ch;
do{
cout<<"===========================\nEnter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search
6. mirror 7. delete 8.display leaf 9.depth\n";
cin>>ch;
switch(ch){
case 1:cout<<"Enter data\n";int data;cin>>data;t1.insert(t1.getRoot(),data);break;
case 2:t1.inorder(t1.getRoot());cout<<endl;break;
case 3:t1.preorder(t1.getRoot());cout<<endl;break;
case 4:t1.postorder(t1.getRoot());cout<<endl;break;
case 5:int sval;cout<<"Enter number to be searched\n"; cin>>sval;
t1.search(t1.getRoot(),sval);break;
case 6:t1.mirror(t1.getRoot());break;
case 7:int dval;cout<<"Enter number to be deleted\n";cin>>dval;t1.del(t1.getRoot(),dval);
break;
case 8:t1.leaf(t1.getRoot());cout<<endl;break;
case 9:cout<<t1.depth(t1.getRoot())<<endl;break;

default:cont=0;
}
}while (cont==1);
cout<<endl;
return 0;
}

OUTPUT
Enter root element
10
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
1
Enter data
5
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
1
Enter data
13
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
1
Enter data
8
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
2
5 8 10 13
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
5
Enter number to be searched
8
Element present
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
6
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
2
13 10 8 5
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
6
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
7
Enter number to be deleted
5
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
2
8 10 13
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
8
8 13
===========================
Enter operation 1.insert 2.inorder 3.preorder 4.postorder 5.search 6. mirror7. delete 8.display leaf 9.depth
9
2

You might also like