So, in short you are using a BST and a FIFO linked list. Whereas, a
Stack is actually a LIFO linked list. Am i right?

On Aug 25, 11:37 pm, Don <dondod...@gmail.com> wrote:
> You will have to keep two pointers, one to the root of the tree and
> one to the head of the FIFO linked list.
> To push, insert the item into both the bst and the linked list.
> To pop, set a pointer to the first item in the linked list. Delete it
> from the bst. It will always be a leaf, so deleting should be easy.
> Follow the parent pointer up one level and set the appropriate left or
> right pointer to null. Then set the head of the linked list to the
> next item in the list. Return the pointer to the former first item.
>
> push(node n)
> {
>   tree.insert(n);   // O(log n)
>   n->next = stack;
>   stack = n;
>
> }
>
> node pop()
> {
>   node result = stack;
>   if (result->parent->left == result) result->parent->left = 0;
>   else result->parent->right = 0;
>   stack = result->next;
>   result->next = 0;
>   return result;
>
> }
>
> I was mistaken when I said push was O(1). Later on I said O(log n)
> which is correct.
>
> Don
>
> On Aug 25, 1:25 pm, shady <sinv...@gmail.com> wrote:
>
>
>
>
>
>
>
> > @don how will you keep track of the latest element inserted in a bst.... ?
> > O(1) for pop ? similarly how to get O(1) for push ?
>
> > Stack can be implemented with bst but the time complexity will increase.
>
> > Anyone with different views ?
>
> > On Thu, Aug 25, 2011 at 11:37 PM, Don <dondod...@gmail.com> wrote:
> > > The only way I see to be able to search in O(log n) and push/pop in
> > > O(1) would be to have each node contain 4 pointers: left, right, and
> > > parent pointers for the binary search tree and next pointer for the
> > > stack linked list. The stack would be a linked list using the "next"
> > > pointer, and the search tree would allow quick searching. Insertion
> > > and searching would be O(log n) as with any binary search tree. Pop
> > > would be O(1).
>
> > > If you don't need to be able to search, just use the "left" pointer to
> > > make a linked list. Push and pop are both O(1), but you don't have a
> > > binary search tree any more.
>
> > > Don
>
> > > On Aug 25, 12:00 pm, prasanth n <nprasnt...@gmail.com> wrote:
> > > > how to implement a stack(push and pop) using binary search tree??
>
> > > > --
> > > > *prasanth*
>
> > > --
> > > 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