Problem Statement
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
Solution
[sourcecode language="cpp"]
class Solution {
public:
void flatten(TreeNode *root) {
TreeNode* prev = NULL;
flattenHelper(root,prev);
}
void flattenHelper(TreeNode* root,TreeNode*& prev) //Needed a pre-order traversal
{
if( root == NULL )
return;
if(prev == NULL)
prev = root;
else
{
prev->right = root;
prev->left = NULL;
prev = prev->right;
}
TreeNode* right = root->right;
flattenHelper(root->left,prev);
flattenHelper(right,prev);
}
};
[/sourcecode]
No comments:
Post a Comment