class Solution { public: void inorder_dfs(Node * node, Node * & parent) { if(node == NULL) { return; } inorder_dfs(node->left, parent); parent->left = NULL; parent->right = node; parent = node; inorder_dfs(node->right, parent); } Node *flattenBST(Node *root) { Node * tmp = new Node(-1); Node * parent = tmp; inorder_dfs(root, parent); parent->left = NULL; parent->right = NULL; Node * res = tmp->right; return res; } };