Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / 2 5 / 3 4 6
The flattened tree should look like:
1 2 3 4 5 6
1 class Solution { 2 public: 3 void flatten(TreeNode* root) { 4 if (root == nullptr) 5 return; 6 flatten(root->left); 7 flatten(root->right); 8 TreeNode* tmp = root->right; 9 root->right = root->left; 10 root->left = nullptr; 11 TreeNode* p = root; 12 while (p->right) 13 p = p->right; 14 p->right = tmp; 15 } 16 }