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.