hii , I'll appreciate it if someone please help me with this problem I want to create a linked-list from the leaves of a tree ordered from right to left . without using a Static or global variable typedef struct t_node { int data; struct t_node *left; struct t_node *right; } T_NODE; typedef struct list_node { int data; struct list_node *next; } L_NODE; the function header : L_NODE* leavesRightToLeft (T_NODE* root, 1 more variable ) for example : Code: 3 / \ 2 5 \ / \ 4 7 9 / 1 and the function will return a pointer to linked list that will be as following : 1 -> 7 -> 4 I've tried to solve it but i have a problem with the pointers, the idea works, but can you help me with the pointers please or you can just give me another solution ? Code: Lnode *leavesRightToLeft(Tree *root,Lnode *last) { Lnode *p,*p2,*lastleft,*lastright; if ( ( root->left==NULL) && (root->right==NULL) ) { p= (Lnode*) malloc (sizeof(Lnode)); p->next=NULL; p->data=root->value; last=p; return p; } else if ( !root->left ) { return leavesRightToLeft(root->right,last); } else if ( !root->right ) { return leavesRightToLeft(root->left,last); } else { p=leavesRightToLeft(root->right,lastright); p2=leavesRightToLeft(root->left,lastleft); lastright->next=p2; last=lastleft; return p; } } Thanks in advanced.