# Flatten Binary Tree to Linked List

> 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) {
return;
}

vector ns;
TreeNode dummy(0);

TreeNode* n = &dummy;

ns.push_back(root);

while(!ns.empty()) {
TreeNode* p = ns.back();
ns.pop_back();

//挂载到右子树
n->right = p;
n = p;


//右子树压栈
if(p->right) {
ns.push_back(p->right);
p->right = NULL;
}

//左子树压栈
if(p->left) {
ns.push_back(p->left);
p->left = NULL;
}
}
}
};
```