给定一个二叉树,将该二叉树就地(in-place)转换为单链表。单链表中节点顺序为二叉树前序遍历顺序。
如果不要求就地转链表,可以借助于一个vector将二叉树转为链表。代码如下:
#include<vector>
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {
}
};
class Solution
{
public:
Solution() {
};
~Solution() {
};
void flatten(TreeNode * root)
{
std::vector<TreeNode*> node_vec;
preorder(root,node_vec);
for (int i = 1; i < node_vec.size(); i++)
{
node_vec[i - 1]->left = NULL;
node_vec[i - 1]->right = node_vec[i];
}