class Solution {
public:
vector<TreeNode*> v;
void DFS(TreeNode* root){
if (!root) return;
v.push_back(root);
DFS(root->left);
DFS(root->right);
}
void flatten(TreeNode* root) {
if (!root) return;
DFS(root);
for(int i=0;i<v.size()-1;i++){
root->left = nullptr;
root->right = v[i+1];
root = root->right;
}
}
};