Thursday 23 November 2017

C++ Program For Inorder Tree Traversal without Recursion


Code:

#include    iostream
using namespace std;
#include
struct tree
{
    tree *l, *r;
    int data;
}*root = NULL, *p = NULL, *s = NULL;
struct node
{
    tree *pt;
    node *next;
}*q = NULL, *top = NULL, *np = NULL;       
void create()
{
    int value ,c = 0;      
    while (c < 6)
    {
        if (root == NULL)
        {
            root = new tree;
            cout<<"enter value of root node\n";
            cin>>root->data;
            root->r = NULL;
            root->l = NULL;
        }
        else
        {
            p = root;
            cout<<"enter value of node\n";
            cin>>value;
            while(true)
            {
                if(value < p->data)
                {
                    if (p->l == NULL)
                    {
                        p->l = new tree;
                        p = p->l;
                        p->data = value;
                        p->l = NULL;
                        p->r = NULL;
                        cout<<"value entered in left\n";
                        break;
                    }
                    else if (p->l != NULL)
                    {
                        p = p->l;
                    }
                }
               else if (value > p->data)
               {
                    if (p->r == NULL)
                    {
                        p->r = new tree;
                        p = p->r;
                        p->data = value;
                        p->l = NULL;
                        p->r = NULL;
                        cout<<"value entered in right\n";
                        break;
                    }
                    else if(p->r != NULL)
                    {
                       p = p->r;
                    }
                }
            }
        }
    c++;
    }
}
void push(tree *ptr)
{
    np = new node;
    np->pt = ptr;
    np->next = NULL;
    if (top == NULL)
    {
        top = np;
    }
    else
    {
        q = top;
        top = np;
        np->next = q;
    }
}
tree *pop()
{
    if (top == NULL)
    {
        cout<<"underflow\n";
    }
    else
    {
        q = top;
        top = top->next;
        return(q->pt);
        delete(q);
    }
}
void traverse(tree *p)
{
    push(p);
    while (top != NULL)
    {
        while (p != NULL)
        {
            push(p);
            p = p->l;
        }
        if (top != NULL && p == NULL)
        {
            p = pop();
            cout<data<
            p = p->r;
        }
    }
}
int main()
{
    int val;
    create();
    cout<<"printing traversal in inorder\n";
    traverse(root);                 
    getch();
}


Output:

enter value of root node
6
enter value of node
2
value entered in left
enter value of node
9
value entered in right
enter value of node
3
value entered in right
enter value of node
5
value entered in right
enter value of node
7
value entered in left
printing traversal in inorder
2
3
5
6
7
9
6



More C++ Programs:
















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...