Advanced Data Structures Lab
Advanced Data Structures Lab
Description:
Program:
#include<iostream>
#include<cstdio>
#include<sstream>
#include<algorithm>
/*
* Node Declaration
*/
structavl_node
int data;
structavl_node *left;
structavl_node *right;
}*root;
/*
* Class Declaration
*/
classavlTree
{
public:
voidinorder(avl_node *);
voidpostorder(avl_node *);
avlTree()
root = NULL;
};
/*
*/
int main()
while (1)
cout<<"\n---------------------"<<endl;
cout<<"\n---------------------"<<endl;
cout<<"3.InOrder traversal"<<endl;
cout<<"4.PreOrder traversal"<<endl;
cout<<"5.PostOrder traversal"<<endl;
cout<<"6.Exit"<<endl;
cin>>choice;
switch(choice)
case 1:
cin>>item;
break;
case 2:
if (root == NULL)
cout<<"Tree is Empty"<<endl;
continue;
}
avl.display(root, 1);
break;
case 3:
cout<<"Inorder Traversal:"<<endl;
avl.inorder(root);
cout<<endl;
break;
case 4:
cout<<"Preorder Traversal:"<<endl;
avl.preorder(root);
cout<<endl;
break;
case 5:
cout<<"Postorder Traversal:"<<endl;
avl.postorder(root);
cout<<endl;
break;
case 6:
exit(1);
break;
default:
cout<<"Wrong Choice"<<endl;
}
return 0;
/*
*/
intavlTree::height(avl_node *temp)
int h = 0;
if (temp != NULL)
h = max_height + 1;
return h;
/*
* Height Difference
*/
intavlTree::diff(avl_node *temp)
returnb_factor;
/*
*/
avl_node *temp;
temp = parent->right;
parent->right = temp->left;
temp->left = parent;
return temp;
/*
*/
avl_node *temp;
temp = parent->left;
parent->left = temp->right;
temp->right = parent;
return temp;
}
/*
*/
avl_node *temp;
temp = parent->left;
returnll_rotation (parent);
/*
*/
avl_node *temp;
temp = parent->right;
returnrr_rotation (parent);
/*
*/
avl_node *avlTree::balance(avl_node *temp)
if (bal_factor> 1)
else
else
return temp;
/*
*/
if (root == NULL)
{
root->data = value;
root->left = NULL;
root->right = NULL;
return root;
return root;
/*
*/
inti;
if (ptr!=NULL)
printf("\n");
if (ptr == root)
cout<<"Root ->";
cout<<"";
cout<<ptr->data;
/*
*/
voidavlTree::inorder(avl_node *tree)
if (tree == NULL)
return;
inorder (tree->left);
cout<<tree->data<<"";
inorder (tree->right);
/*
voidavlTree::preorder(avl_node *tree)
if (tree == NULL)
return;
cout<<tree->data<<"";
preorder (tree->left);
preorder (tree->right);
/*
*/
voidavlTree::postorder(avl_node *tree)
if (tree == NULL)
return;
cout<<tree->data<<"";
Output: