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
class Solution {
public:
void flatten(TreeNode* root) {
if(root==NULL)
return;
if(root->left)
flatten(root->left);
if(root->right)
flatten(root->right);
if(root->left)
{
TreeNode *temp = root->right;
root->right = root->left;
TreeNode *node = root->left;
while(node->right)
{
node = node->right;
}
node->right = temp;
}
root->left=NULL;
}
};