0

I made this program to create a binary search tree but it is not working properly ......could smbdy tell me whts the prob

/* Creating a BInary Tree */

#include<conio.h>
#include<stdio.h>

struct node
{
    struct node *lt;
    struct node *rt;
    int data;
}*temp;

void inorder(struct node* root)
{
    while(root != NULL)
    {
        inorder(root->lt);
        printf(" %d",root->data);
        inorder(root->rt);
    }
}

void main()
{
    struct node *root,*New;
    char ch;
//  int num;
    clrscr();
    root= NULL;
    do
    {
        New = (struct node*)malloc(sizeof(struct node*));
        New->lt = NULL;
        New->rt = NULL;

        printf("\nEnter the node:");
        scanf("%d",&New->data);

        if(root == NULL)
            root = New;
        else
        {
            temp = root;
            while(1)
            {
                if(New->data < temp->data)
                {
                    if(temp->lt == NULL)
                    {
                        temp->lt = New;
                        break;
                    }
                    else
                        temp = temp->lt;
                }
                else
                {
                    if(temp->rt == NULL)
                    {
                        temp->rt = New;
                        break;
                    }
                    else
                        temp = temp->rt;
                }
            }
        }

        //free(New);

        printf("DO u want to continue(y/n):");
        flushall();
        scanf("%c",&ch);

    }while(ch == 'y' || ch == 'Y' );

    inorder(root);
    getch();
}

Edited by Dani: Formatting fixed

3
Contributors
6
Replies
7
Views
9 Years
Discussion Span
Last Post by nitsmooth
0

I made this program to create a binary search tree but it is not working properly ......could smbdy tell me whts the prob

Can you be more specific? What in particular is not working?

0

Ya Actually the root smhow doesnot point to the head or root node when i accept the second node .... and thus i m not able to print the tree

0

The problem is with:
New = (struct node*)malloc(sizeof(struct node*));
//Here you are allocating 4 bytes of memory, sizeof(pointer) is always 4 bytes.

so better use:
New = (struct node*)malloc(sizeof(struct node));
//Here you are allocating memory required for the node

0

ya u r right ..... thanks v ..... but now somehow the tree is not getting printed properly..if i put node 10 , 5 , 15 it is printing 5 infinitely when i run the program ...wats wrong thr???

0
void inorder(struct node* root)
{
   while(root != NULL)
   {
      inorder(root->lt);
      printf(" %d",root->data);
      inorder(root->rt);
   }
}

The problem is with the above code: why are you using while loop????

void inorder(struct node* root)
{
   if(root != NULL)
   {
      inorder(root->lt);
      printf(" %d",root->data);
      inorder(root->rt);
   }
}

Instead use if statement. That should solve your problem

0
void inorder(struct node* root)
{
   while(root != NULL)
   {
      inorder(root->lt);
      printf(" %d",root->data);
      inorder(root->rt);
   }
}

The problem is with the above code: why are you using while loop????

void inorder(struct node* root)
{
   if(root != NULL)
   {
      inorder(root->lt);
      printf(" %d",root->data);
      inorder(root->rt);
   }
}

Instead use if statement. That should solve your problem

Ya thts rightt Thnks man !!!

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.