Convert binary tree to a doubly linked list

C++
#include <iostream> 
using namespace std; 
  
void BinaryTree2DoubleLinkedList(node *root, node **head) 
{ 
    if (root == NULL) return; 
    static node* prev = NULL; 
    BinaryTree2DoubleLinkedList(root->left, head); 
    if (prev == NULL) 
        *head = root; 
    else
    { 
        root->left = prev; 
        prev->right = root; 
    } 
    prev = root; 
    BinaryTree2DoubleLinkedList(root->right, head); 
} 
  

node* newNode(int data) 
{ 
    node* new_node = new node; 
    new_node->data = data; 
    new_node->left = new_node->right = NULL; 
    return (new_node); 
} 
  
void printList(node *node) 
{ 
    while (node!=NULL) 
    { 
        cout << node->data << " "; 
        node = node->right; 
    } 
} 
Source

Also in C++: