Вместо локальной переменной static
вы можете изменить свою функцию, приняв третий параметр со значением по умолчанию NULL
.
void BToDLL(Node *root, Node **head_ref, Node* prev=NULL)
При первом вызове BToDLL
берется значение по умолчанию, но в последнем рекурсивном вызове BToDLL
вы также можете указать аргумент prev
.
BToDLL(root->right,head_ref, prev);