Re: [algogeeks] tree from linked list

2010-05-09 Thread rahul rai
can anyone give me links to more educative and active groups like algogeeks

On Sun, May 9, 2010 at 2:11 AM, Arun prasath
aruntendulkar2...@gmail.com wrote:
 This does not create a balanced tree but ensures that every element in the
 tree is accessible by lg(n) time.

 Time : Complexity   O(n)


 [a...@91blore-srv1 ~]$ cat recursion.c
 #include stdlib.h
 #includeunistd.h
 #include stdio.h
 #define TEST2
 #ifdef TEST1
 int arr[] = { 1,2,3,4,5,6,7};
 int max_elems = sizeof(arr)/sizeof(arr[0]);
 #endif

 #ifdef TEST2
 int arr[] = { 1,2,3,4,5};
 int max_elems = sizeof(arr)/sizeof(arr[0]);
 #endif

 #ifdef TEST3
 int arr[] = { 1,2,3,4,5,6,7,8};
 int max_elems = sizeof(arr)/sizeof(arr[0]);
 #endif

 #define LIST_EMPTY -1

 struct tree {
     int data;
     struct tree * left,* right;
 };

 struct tree* function( int , int);
 void print_inorder( struct tree *);

 int return_next_from_list(void)
 {
     static int nxt_elem = 0;
     if(nxt_elem  max_elems)
     return arr[nxt_elem++];

     return LIST_EMPTY;// empty condition
 }
 int main()
 {
     unsigned int  x = max_elems;
     struct tree* head;
     while( x  (x - 1) ) {
     x = x  (x - 1) ;
     }

     head = function(0, x);
     print_inorder(head);
     free(head);
     return 0;
 }
 struct tree* function(int mid, int i)
 {
     int val = mid + i ;
     if (val  1) {
     struct tree * leaf = malloc( sizeof(struct tree) );
     leaf-left = leaf-right = NULL;
     leaf-data = return_next_from_list();
     if(leaf-data == LIST_EMPTY) {
     free(leaf);
     return NULL;
     }
     return leaf;
     }
     struct tree *non_leaf = malloc( sizeof(struct tree) ) ;

     non_leaf-left  = function( mid, i/2);
     non_leaf-data = return_next_from_list();
     if (non_leaf-data == LIST_EMPTY) {
     struct tree *tmp = non_leaf-left;
     free(non_leaf);
     return tmp;
     }
     non_leaf-right = function( mid+i, i/2);
     return non_leaf;
 }
 void print_inorder( struct tree* root)
 {
     struct tree * trav = root;
     if (!trav) {
     return;
     }
     print_inorder(trav-left);
     if(trav-left)
     free(trav-left);
     printf({%d}, trav-data);
     print_inorder(trav-right);
     if(trav-right)
     free(trav-right);

 }
 [a...@91blore-srv1 ~]$


 On Sun, May 2, 2010 at 6:38 PM, divya sweetdivya@gmail.com wrote:

 u are given a sorted lnked list construct a balanced binary search
 tree from it.

 --
 You received this message because you are subscribed to the Google Groups
 Algorithm Geeks group.
 To post to this group, send email to algoge...@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 algoge...@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 algoge...@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.



Re: [algogeeks] a google question

2010-05-09 Thread Arun prasath
The nature of the problem involves inserting some elements in heap and
retriving back ..It could be solved in worst case O(n * lg(n)).
Average case O(n) solution is not there I believe.

-Arun prasath N



On Fri, Apr 30, 2010 at 5:35 PM, divya sweetdivya@gmail.com wrote:

 Given two sorted postive integer arrays A(n) and B(n) (W.L.O.G, let's
 say they are decreasingly sorted), we define a set S = {(a,b) | a \in
 A
 and b \in B}. Obviously there are n^2 elements in S. The value of such
 a pair is defined as Val(a,b) = a + b. Now we want to get the n pairs
 from S with largest values. The tricky part is that we need an O(n)
 algorithm.

 --
 You received this message because you are subscribed to the Google Groups
 Algorithm Geeks group.
 To post to this group, send email to algoge...@googlegroups.com.
 To unsubscribe from this group, send email to
 algogeeks+unsubscr...@googlegroups.comalgogeeks%2bunsubscr...@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 algoge...@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.