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 \ 6answer:
class Solution {
public:
void flatten(TreeNode* root) {
stack<TreeNode *> myStack;
myStack.push(root);
while(!myStack.empty()){
TreeNode * temp = myStack.top();
myStack.pop();
if(temp == NULL)
return;
if(temp->right != NULL)
myStack.push(temp->right);
if(temp->left != NULL){
myStack.push(temp->left);
}
if(!myStack.empty())
temp->right = myStack.top();
temp->left = NULL;
}
return;
}
};