#include<iostream>
#include<conio.h>
using namespace std;
struct tree
{
int data;
tree *left, *right;
};
typedef struct tree node;
node *root=NULL,*temp=NULL,*ptr=NULL;
struct N
{
tree *p;
N *next;
};
typedef struct N NODE;
NODE *top=NULL,*new_ptr=NULL,*q=NULL;
void create()
{
int value,i=0,n;
cout<<"Enter Total Node Node Number: ";
cin>>n;
while (i < n)
{
if (root == NULL)
{
root = new node();
cout<<"Enter Root Data: ";
cin>>root->data;
root->right = NULL;
root->left = NULL;
}
else
{
temp = root;
cout<<"Data: ";
cin>>value;
while(true)
{
if(value < temp->data)
{
if (temp->left == NULL)
{
temp->left = new node();
temp = temp->left;
temp->data = value;
temp->left = NULL;
temp->right = NULL;
cout<<"value entered in left side
";
break;
}
else if (temp->left != NULL)
{
temp = temp->left;
}
}
else if (value >=temp->data)
{
if (temp->right == NULL)
{
temp->right = new node();
temp = temp->right;
temp->data = value;
temp->left = NULL;
temp->right = NULL;
cout<<"value entered in right side
";
break;
}
else if(temp->right != NULL)
{
temp = temp->right;
}
}
}
}
i++;
}
}
void push(tree *ptr)
{
new_ptr = new NODE;
new_ptr->p = ptr;
new_ptr->next = NULL;
if (top == NULL)
{
top = new_ptr;
}
else
{
q = top;
top = new_ptr;
new_ptr->next = q;
}
}
tree *pop()
{
if (top == NULL)
{
cout<<"underflow
";
}
else
{
q = top;
top = top->next;
return(q->p);
delete(q);
}
}
void traverse(tree *ptr)
{
int flag=1;
push(ptr);
while (top != NULL)
{
while (ptr != NULL)
{
push(ptr);
ptr =ptr->left;
}
if (top != NULL && ptr == NULL)
{
ptr = pop();
if(flag!=1)
{
cout<<ptr->data<<" ";
}
flag++;
ptr = ptr->right;
}
}
}
int main()
{
create();
cout<<"Print Inorder : ";
traverse(root);
cout<<endl;
}
Output
Enter Total Node Node Number: 5
Enter Root Data: 1
Data: 4
value entered in right side
Data: 5
value entered in right side
Data: 1
value entered in left side
Data: 7
value entered in right side
Print Inorder : 1 4 5 7 1
Add your comment