@asit dhal,
in order of any BST is increasing order.
so required is only either preorder/postorder

surender

On Tue, Sep 27, 2011 at 12:42 AM, Gene <gene.ress...@gmail.com> wrote:

> Here is a little program to show how it works.  It's a nice little
> problem.  There is also a coding with recursion.
>
> #include <stdio.h>
> #include <stdlib.h>
>
> typedef struct node_s {
>  int data;
>  struct node_s *left, *right;
> } NODE;
>
> void print_tree(NODE *tree)
> {
>  if (tree == NULL) return;
>  print_tree(tree->left);
>  printf(" %d", tree->data);
>  print_tree(tree->right);
> }
>
> void save_tree(NODE *tree)
> {
>  if (tree == NULL) return;
>  printf("%d\n", tree->data);
>  save_tree(tree->left);
>  save_tree(tree->right);
> }
>
> NODE *new_node(int data)
> {
>  NODE *node = malloc(sizeof *node);
>  node->data = data;
>  node->left = node->right = NULL;
>  return node;
> }
>
> NODE *read_tree(void)
> {
>  int data, sp = 0;
>  NODE *root, *node, *last, *stack[10000];
>
>  // Loop invariants: Root holds tree root.
>  // Last holds last node added.
>  // Stack[i] holds the unique node at
>  // level i to which a right child might
>  // still be added.
>  root = last = NULL;
>  while (scanf("%d", &data) == 1) {
>    node = new_node(data);
>    if (root == NULL)
>      root = node;
>    else {
>      // If new node has key < last, it must
>      // be the left child of last. Attach and
>      // push onto stack because we still
>      // may receive a right child.
>      if (data < last->data) {
>        last->left = node;
>        stack[sp++] = last;
>      }
>      // Else it has key > last, so if the key is also <
>      // the deepest level waiting for a right child, it
>      // can only be right child of the last node.
>      else if (sp == 0 || data < stack[sp - 1]->data)
>        last->right = node;
>      // Else it must be the right child of an ancestor.
>      // The possible ancestors are on the stack.
>      // Pop the stack until we find the last ancestor
>      // with larger key and attach there.
>      else {
>        while (sp > 1 && data > stack[sp - 2]->data)
>          --sp;
>        stack[--sp]->right = node;
>      }
>    }
>    last = node;
>  }
>  return root;
> }
>
> int main(void)
> {
>  print_tree(read_tree());
>  return 0;
> }
>
>
> On Sep 24, 8:28 pm, vikas <vikas.rastogi2...@gmail.com> wrote:
> > if this is simple BST then only preorder will suffice
> >
> > On Sep 24, 10:16 pm, wetheart <gumnaamsm...@yahoo.com> wrote:
> >
> >
> >
> > > You can put the array representation of binary tree directly, with
> > > some obvious modifications ofcourse :)
> >
> > > On Sep 24, 5:38 pm, asdqwe <ayushgoel...@gmail.com> wrote:
> >
> > > > you can put two traversals of three (inorder, preorder or postorder)
> > > > in the file..
> > > > Two traversals are enough to dedicate a particular tree.
> >
> > > > On Sep 24, 4:05 pm, Asit Dhal <lipu...@gmail.com> wrote:
> >
> > > > > I need to print a binary search tree in file. When I will retrieve
> the same
> > > > > tree from the file.
> >
> > > > > I have thought about printing in xml format like this
> >
> > > > >           100
> > > > >          /     \
> > > > >       50      150
> > > > >      /   \       /   \
> > > > >    30  70   120 200
> >
> > > > > <Level 0>
> > > > > 100
> > > > > <Level 1>
> > > > > 50
> > > > > <Level 2>
> > > > > 30
> > > > > </Level2>
> > > > > <Level 2>
> > > > > 70
> > > > > </Level 2>
> > > > > </Level 1>
> > > > > <Level 1>
> > > > > 150
> > > > > <Level 2>
> > > > > 120
> > > > > </Level 2>
> > > > > <Level 2>
> > > > > 200
> > > > > </level 2>
> > > > > </level 1>
> > > > > </level 0>
> >
> > > > > I don't know will this be the best solution or not.
> >
> > > > > Please suggest me how to approach it or some better solution.
> >
> > > > > Regards
> > > > > Asithttp://kodeyard.blogspot.com/- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

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

Reply via email to