if u r getting desired output ? then what is the problem?

On Sun, Sep 2, 2012 at 7:24 PM, shubham jain <[email protected]>wrote:

> Hi
> I am trying to convert the BST to doubly linked list but I  am  getting
> desired output with this code ....Plz correct this code.....
>
> #include<stdio.h>
> #include<stdlib.h>
> typedef struct tree mytree;
> struct tree
> {
>    int data;
>    mytree* left;
>    mytree* right;
> };
>
> void insert(mytree** root,int data)
> {
>   if(*root==NULL)
>   {
>   mytree* node=(mytree*)malloc(sizeof(mytree));
>   if(node==NULL)
>   return;
>   else
>   {
>     node->data=data;
>     node->left=NULL;
>     node->right=NULL;
>   }
>
>   *root=node;
>     return;
>   }
>   else
>   {
>      if((*root)->data >=data)
>        insert(&(*root)->left,data);
>     else
>        insert(&(*root)->right,data);
>   }
> }
>
> void traverse(mytree* ptr)
> {
>   if(ptr==NULL)  return;
>   traverse(ptr->left);
>   printf("%d\t",ptr->data);
>   traverse(ptr->right);
> }
>
> void traversell(mytree* ptr)
> {
>   if(ptr==NULL)  return;
>   while(ptr!=NULL)
>   {
>       printf("%d\t",ptr->data);
>       ptr=ptr->right;
>   }
>
> }
>
> void bst22ll(mytree** tree,mytree** head)
> {
>    static mytree* prev=NULL;
>    if(*tree==NULL)  return;
>    mytree* ptr=*tree;
>    if((*tree)->left!=NULL)
>    bst22ll(&(*tree)->left,head);
>    *tree=ptr;
>    if(*head==NULL)
>     {
>       *head=*tree;
>       (*head)->left==NULL;
>     }
>    else
>     {
>       prev->right=*tree;
>       (*tree)->left=prev;
>     }
>     prev=*tree;
>
>    if((*tree)->right!=NULL)
>      {
>          bst22ll(&(*tree)->right,head);
>      }
> }
>
>
>
> void bst2ll(mytree** tree)
> {
>   if(tree==NULL)  return;
>   mytree* head=NULL;
>   mytree* prev=NULL;
>   bst22ll(tree,&head);
>   *tree=head;
> }
>
> int main()
> {
> mytree* tree=NULL;
> insert(&tree,50);
> insert(&tree,40);
> insert(&tree,60);
> insert(&tree,30);
> insert(&tree,70);
> insert(&tree,65);
> insert(&tree,45);
> insert(&tree,34);
> traverse(tree);
> bst2ll(&tree);
> printf("\n");
> traversell(tree);
> printf("\n");
> }
>
>
> should print : 30  34  40  45  50  60  65 70
> but printing:   30  34  40  45  50  60  70
>
>
> Thank you
> Shubham
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/algogeeks/-/XXMvBSg0t08J.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
With regards,
Manish kumar untwal
Indian Institute of Information Technology
Allahabad (2009-2013 batch)

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to