i got a BST tree

each node builded like this:

i need to change it into a sorted linked list from the smallest to the biggest.Code:typedef struct node node; struct node { int value; node *left,* right,*next; };

i cant use malloc

and i cant change the anything in this tree

i need to write a function called

node *tree2list(node *root) that gets a root of the tree and returns the head of a list

first i can find the smallest member in this tree

the problem comes when i need to find the second smallestCode:while (tree->left){ tree=tree->left; }

and put it to the "next" of the smallest member of all the tree

its a recursion

but i dont know how to make a pointer for a tree which will lack that "first found " node

because our pointer after that loop is at the bottom of a tree

i cant go back to the root

and i cant cut this "founded node" from that tree without changing the structure of a tree

??